一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Redis和Spring?Ai構(gòu)建rag應(yīng)用程序

虹科網(wǎng)絡(luò)可視化技術(shù) ? 2024-04-29 08:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著AI技術(shù)的不斷進(jìn)步,開發(fā)者面臨著如何有效利用現(xiàn)有工具和技術(shù)來加速開發(fā)過程的挑戰(zhàn)。Redis與Spring AI的結(jié)合為Java開發(fā)者提供了一個強(qiáng)大的平臺,以便快速構(gòu)建并部署響應(yīng)式AI應(yīng)用。探索這一整合如何通過簡化的開發(fā)流程,讓開發(fā)者能夠更專注于創(chuàng)新而非底層實(shí)現(xiàn)。

一、Spring AI 簡介

由大型語言模型(LLM)驅(qū)動的應(yīng)用程序中,向量數(shù)據(jù)庫常作為人工智能應(yīng)用程序的核心存儲技術(shù)。此類數(shù)據(jù)庫需要支持語義搜索,并為LLM提供相關(guān)的上下文環(huán)境。

在此之前,通過Spring和Redis來構(gòu)建人工智能應(yīng)用程序的選項(xiàng)還相對有限。而最近,Redis作為一種高性能的向量數(shù)據(jù)庫方案,現(xiàn)已引起廣泛關(guān)注。Spring社區(qū)推出了一個名為Spring?AI的新項(xiàng)目,旨在簡化人工智能應(yīng)用程序特別是那些涉及向量數(shù)據(jù)庫的應(yīng)用的開發(fā)流程。

下面將介紹如何使用Redis作為向量數(shù)據(jù)庫構(gòu)建一個Spring AI應(yīng)用程序,實(shí)現(xiàn)檢索增強(qiáng)生成(RAG)工作流。

二、檢索增強(qiáng)生成

檢索增強(qiáng)生成(RAG)是一種結(jié)合數(shù)據(jù)與人工智能模型的技術(shù)方法。在RAG工作流中,首先需要將數(shù)據(jù)加載入向量數(shù)據(jù)庫(例如Redis)。接收到用戶查詢后,向量數(shù)據(jù)庫會檢索出一組與查詢相似的文檔。這些文檔將作為解答用戶問題的上下文,并結(jié)合用戶的查詢,通常通過人工智能模型來生成響應(yīng)。

本例中,我們將利用一個包含各類啤酒信息的數(shù)據(jù)集進(jìn)行演示,數(shù)據(jù)集中包含啤酒的名稱、酒精含量(ABV)、國際苦味單位(IBU)和描述等屬性。該數(shù)據(jù)集將被加載到Redis中,以展示RAG工作流的實(shí)際應(yīng)用。

三、代碼和依賴關(guān)系

可以在GitHub上找到Spring?AI和Redis演示的全部代碼。

本項(xiàng)目使用了Spring Boot作為Web應(yīng)用程序的啟動依賴項(xiàng),并結(jié)合了Azure OpenAI和Spring?AI?Redis。

四、數(shù)據(jù)加載

我們的應(yīng)用程序?qū)⒉捎锰峁┢【菩畔⒌腏SON文檔作為數(shù)據(jù)來源。每個文檔的結(jié)構(gòu)如下:

{ "id": "00gkb9", "name": "Smoked Porter Ale", "description": "The Porter Pounder Smoked Porter is a dark rich flavored ale that is made with 5 malts that include smoked and chocolate roasted malts. It has coffee and mocha notes that create a long finish that ends clean with the use of just a bit of dry hopping", "abv": 8, "ibu": 36}

為了將啤酒數(shù)據(jù)集加載到 Redis 中,我們將使用 RagDataLoader 類。該類包含一個方法,在應(yīng)用程序啟動時執(zhí)行。在該方法中,我們使用一個 JsonReader 來解析數(shù)據(jù)集,然后使用自動連接的?VectorStore 將文檔插入 Redis。

// Create a JSON reader with fields relevant to our use caseJsonReader loader = new JsonReader(file, "name", "abv", "ibu", "description");// Use the autowired VectorStore to insert the documents into RedisvectorStore.add(loader.get());

至此,我們得到了一個包含約 22,000種啤酒及其相應(yīng)嵌入的數(shù)據(jù)集。

五、RAGService

RagService 類實(shí)現(xiàn)了 RAG 工作流程。當(dāng)收到用戶提示時,會調(diào)用 retrieve 方法,執(zhí)行以下步驟:

計算用戶提示的向量

查詢Redis數(shù)據(jù)庫,檢索最相關(guān)的文檔

使用檢索到的文檔和用戶提示構(gòu)建一個提示信息

使用提示調(diào)用聊天客戶端以生成響應(yīng)

public Generation retrieve(String message) { SearchRequest request = SearchRequest.query(message).withTopK(topK); // Query Redis for the top K documents most relevant to the input message List docs = store.similaritySearch(request); Message systemMessage = getSystemMessage(docs); UserMessage userMessage = new UserMessage(message); // Assemble the complete prompt using a template Prompt prompt = new Prompt(List.of(systemMessage, userMessage)); // Call the autowired chat client with the prompt ChatResponse response = client.call(prompt); return response.getResult();}

六、Controller

現(xiàn)在我們已經(jīng)實(shí)現(xiàn)了 RAG 服務(wù),可以將其封裝在 HTTP 端點(diǎn)中。

RagController 類將服務(wù)作為 POST 端點(diǎn)公開:

@PostMapping("/chat/{chatId}")@ResponseBodypublic Message chatMessage(@PathVariable("chatId") String chatId, @RequestBody Prompt prompt) { // Extract the user prompt from the body and pass it to the autowired RagService Generation generation = ragService.retrieve(prompt.getPrompt()); // Reply with the generated message return Message.of(generation.getOutput().getContent());}

七、用戶界面

在用戶界面方面,創(chuàng)建一個簡單的 React 前端,允許用戶提出有關(guān)啤酒的問題。前端通過向/chat/{chatId}端點(diǎn)發(fā)送 HTTP 請求并顯示響應(yīng)來與 Spring 后端交互。

036c3cec-05bc-11ef-9118-92fbcf53809c.png

僅通過簡單的幾個類,我們就用 Spring AI 和 Redis 實(shí)現(xiàn)了一個 RAG 應(yīng)用程序。

若要更進(jìn)一步,我們建議您查看?Github?上的示例代碼。將 Redis 的高效和易用性與 Spring AI 提供的便捷抽象相結(jié)合,Java 開發(fā)人員使用 Spring 構(gòu)建響應(yīng)式 AI 應(yīng)用程序?qū)⒆兊酶尤菀住?/p>

有關(guān)向量數(shù)據(jù)庫的更多信息,歡迎與我們溝通交流~

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    34765

    瀏覽量

    276914
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14965
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    385

    瀏覽量

    11378
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    請問是否可以在通用Windows平臺中構(gòu)建OpenVINO? GenAI C++ 應(yīng)用程序

    無法在通用 Windows 平臺中構(gòu)建OpenVINO? GenAI C++ 應(yīng)用程序
    發(fā)表于 06-24 07:35

    如何在 Raspberry Pi AI Camera 上構(gòu)建為開發(fā)人員提供實(shí)時的智能應(yīng)用程序!

    。最近推出的RaspberryPiAICamera是一款功能強(qiáng)大的硬件,可讓您在RaspberryPi上構(gòu)建功能強(qiáng)大的AI應(yīng)用程序。通過將人工智能推理卸載到IMX
    的頭像 發(fā)表于 03-25 09:37 ?252次閱讀
    如何在 Raspberry Pi <b class='flag-5'>AI</b> Camera 上<b class='flag-5'>構(gòu)建</b>為開發(fā)人員提供實(shí)時的智能<b class='flag-5'>應(yīng)用程序</b>!

    MCP:連接AI應(yīng)用程序的開放標(biāo)準(zhǔn)!

    作者:算力魔方創(chuàng)始人/英特爾創(chuàng)新大使劉力 擴(kuò)展AI大模型的方式有兩種,第一種是通過訓(xùn)練增強(qiáng)AI大模型自身的能力;第二種是讓AI大模型與其它現(xiàn)有的應(yīng)用程序(例如:數(shù)據(jù)庫、瀏覽器、Gmai
    的頭像 發(fā)表于 03-21 18:21 ?836次閱讀
    MCP:連接<b class='flag-5'>AI</b>與<b class='flag-5'>應(yīng)用程序</b>的開放標(biāo)準(zhǔn)!

    AI Agent 應(yīng)用與項(xiàng)目實(shí)戰(zhàn)》閱讀心得3——RAG架構(gòu)與部署本地知識庫

    技術(shù)不僅解決了LLM的知識更新問題,更為構(gòu)建專業(yè)領(lǐng)域的智能問答系統(tǒng)提供了完整的技術(shù)方案。通過與向量數(shù)據(jù)庫的深度集成,RAG實(shí)現(xiàn)了知識的動態(tài)擴(kuò)展和精準(zhǔn)檢索,這種架構(gòu)設(shè)計為AI系統(tǒng)的持續(xù)進(jìn)化提供了可能。在
    發(fā)表于 03-07 19:49

    利用OpenVINO和LlamaIndex工具構(gòu)建多模態(tài)RAG應(yīng)用

    文本內(nèi)容構(gòu)建 RAG 流水線已經(jīng)相對成熟。然而為視頻內(nèi)容構(gòu)建 RAG 流水線則困難得多。由于視頻結(jié)合了圖像,音頻和文本元素,因此需要更多和更復(fù)雜的數(shù)據(jù)處理能力。本文將介紹如何利用 Op
    的頭像 發(fā)表于 02-21 10:18 ?2056次閱讀
    利用OpenVINO和LlamaIndex工具<b class='flag-5'>構(gòu)建</b>多模態(tài)<b class='flag-5'>RAG</b>應(yīng)用

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】RAG基本概念

    RAG應(yīng)用架構(gòu)具備清晰的分層設(shè)計。知識庫構(gòu)建層,著重于將各類非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行有效處理,轉(zhuǎn)化為計算機(jī)能夠理解的形式,通過向量化編碼技術(shù)為數(shù)據(jù)賦予數(shù)字特征,并建立動態(tài)索引以便快速查詢更新。檢索增強(qiáng)層,采用
    發(fā)表于 02-08 00:22

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】+第一章初體驗(yàn)

    機(jī)制。 《基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化》第一章以清晰的邏輯框架,幫助讀者建立對大模型與RAG的全局認(rèn)知。通過剖析技術(shù)原理、優(yōu)勢與挑戰(zhàn),作者為后續(xù)章節(jié)的實(shí)踐內(nèi)容奠定了基礎(chǔ)。對于開發(fā)者而言,掌握RAG技術(shù)不僅是提升模型性能的
    發(fā)表于 02-07 10:42

    【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】+Embedding技術(shù)解讀

    今天學(xué)習(xí)大模型RAG 檢索增強(qiáng)生成技術(shù)Embedding,即嵌入,是一種將離散數(shù)據(jù)(如文字、圖像、音頻等)轉(zhuǎn)換為連續(xù)的密集向量表示的技術(shù)。這些向量能夠反映原始數(shù)據(jù)之間的關(guān)系,使得計算機(jī)能夠更好地處
    發(fā)表于 01-17 19:53

    Redis緩存與Memcached的比較

    Redis和Memcached都是廣泛使用的內(nèi)存數(shù)據(jù)存儲系統(tǒng),它們主要用于提高應(yīng)用程序的性能,通過減少對數(shù)據(jù)庫的直接訪問來加速數(shù)據(jù)檢索。以下是對Redis和Memcached的比較,涵蓋了它們的一些
    的頭像 發(fā)表于 12-18 09:33 ?556次閱讀

    RAG的概念及工作原理

    檢索增強(qiáng)型生成(RAG)系統(tǒng)正在重塑我們處理AI驅(qū)動信息的方式。作為架構(gòu)師,我們需要理解這些系統(tǒng)的基本原理,從而有效地發(fā)揮它們的潛力。 什么是RAG? 總體而言,RAG系統(tǒng)通過將大型語
    的頭像 發(fā)表于 12-17 13:41 ?1643次閱讀
    <b class='flag-5'>RAG</b>的概念及工作原理

    Cloudera推出RAG Studio,助力企業(yè)快速部署聊天機(jī)器人

    近日,數(shù)據(jù)、分析和AI混合平臺廠商Cloudera宣布了一項(xiàng)創(chuàng)新舉措——推出RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)Studio。這一平臺的問世,標(biāo)志著
    的頭像 發(fā)表于 12-12 11:06 ?704次閱讀

    使用OpenVINO和LlamaIndex構(gòu)建Agentic-RAG系統(tǒng)

    RAG 系統(tǒng)的全稱是 Retrieval-augmented Generation,本質(zhì)上是 Prompt Engineering,通過在 Prompt 中注入檢索得到的外部數(shù)據(jù),可以有效地
    的頭像 發(fā)表于 10-12 09:59 ?714次閱讀
    使用OpenVINO和LlamaIndex<b class='flag-5'>構(gòu)建</b>Agentic-<b class='flag-5'>RAG</b>系統(tǒng)

    使用OpenVINO GenAI API在C++中構(gòu)建AI應(yīng)用程序

    許多桌面應(yīng)用程序是使用 C++ 開發(fā)的,而將生成式AI(GenAI)功能集成到這些應(yīng)用程序中可能會很具有挑戰(zhàn)性,尤其是因?yàn)槭褂孟?Hugging Face 這樣的 Python 庫的復(fù)雜性。C++
    的頭像 發(fā)表于 10-12 09:36 ?1084次閱讀
    使用OpenVINO GenAI API在C++中<b class='flag-5'>構(gòu)建</b><b class='flag-5'>AI</b><b class='flag-5'>應(yīng)用程序</b>

    Spring Cloud Gateway網(wǎng)關(guān)框架

    SpringCloud Gateway功能特征如下: (1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進(jìn)行構(gòu)建; (2) 動態(tài)路由:能夠匹配任何請求屬性;
    的頭像 發(fā)表于 08-22 09:58 ?704次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網(wǎng)關(guān)框架

    英特爾軟硬件構(gòu)建模塊如何幫助優(yōu)化RAG應(yīng)用

    軟硬件構(gòu)建模塊如何幫助優(yōu)化RAG應(yīng)用,在簡化部署和支持?jǐn)U展的同時,增強(qiáng)其上下文感知能力和實(shí)時響應(yīng)性能。 1 為您的應(yīng)用量身定制GenAI ChatGPT的面世改變了AI的發(fā)展格局。企業(yè)爭相利用這項(xiàng)新技術(shù)
    的頭像 發(fā)表于 07-24 15:12 ?839次閱讀
    英特爾軟硬件<b class='flag-5'>構(gòu)建</b>模塊如何幫助優(yōu)化<b class='flag-5'>RAG</b>應(yīng)用