91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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ù)來(lái)加速開發(fā)過(guò)程的挑戰(zhàn)。Redis與Spring AI的結(jié)合為Java開發(fā)者提供了一個(gè)強(qiáng)大的平臺(tái),以便快速構(gòu)建并部署響應(yīng)式AI應(yīng)用。探索這一整合如何通過(guò)簡(jiǎn)化的開發(fā)流程,讓開發(fā)者能夠更專注于創(chuàng)新而非底層實(shí)現(xiàn)。

一、Spring AI 簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

我們的應(yīng)用程序?qū)⒉捎锰峁┢【菩畔⒌腏SON文檔作為數(shù)據(jù)來(lái)源。每個(gè)文檔的結(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 類。該類包含一個(gè)方法,在應(yīng)用程序啟動(dòng)時(shí)執(zhí)行。在該方法中,我們使用一個(gè) JsonReader 來(lái)解析數(shù)據(jù)集,然后使用自動(dòng)連接的?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());

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

五、RAGService

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

計(jì)算用戶提示的向量

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

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

使用提示調(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)建一個(gè)簡(jiǎn)單的 React 前端,允許用戶提出有關(guān)啤酒的問(wèn)題。前端通過(guò)向/chat/{chatId}端點(diǎn)發(fā)送 HTTP 請(qǐng)求并顯示響應(yīng)來(lái)與 Spring 后端交互。

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

僅通過(guò)簡(jiǎn)單的幾個(gè)類,我們就用 Spring AI 和 Redis 實(shí)現(xiàn)了一個(gè) 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ù)庫(kù)的更多信息,歡迎與我們溝通交流~

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

    關(guān)注

    91

    文章

    39878

    瀏覽量

    301530
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15942
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    392

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問(wèn)如何構(gòu)建和運(yùn)行視頻編解碼器示例應(yīng)用程序?

    如何構(gòu)建和運(yùn)行視頻編解碼器示例應(yīng)用程序
    發(fā)表于 03-10 06:27

    RAG(檢索增強(qiáng)生成)原理與實(shí)踐

    持續(xù)迭代 :基于用戶反饋和評(píng)估結(jié)果不斷改進(jìn) 選擇合適的工具棧 :根據(jù)實(shí)際需求選擇Embedding模型、向量數(shù)據(jù)庫(kù)和LLM RAG技術(shù)正在快速發(fā)展,掌握其原理與實(shí)踐,將幫助你構(gòu)建更智能、更可靠的AI應(yīng)用。
    發(fā)表于 02-11 12:46

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用

    搜索和調(diào)用外部 AI 模型的 SQL 原生 API。NVIDIA 與微軟共同將 SQL Server 2025 與 NVIDIA Nemotron RAG 開放模型集合無(wú)縫連接,這使您能夠在云端或本地環(huán)境中基于自己的數(shù)據(jù)構(gòu)建高性
    的頭像 發(fā)表于 12-01 09:31 ?818次閱讀
    使用NVIDIA Nemotron <b class='flag-5'>RAG</b>和Microsoft SQL Server 2025<b class='flag-5'>構(gòu)建</b>高性能<b class='flag-5'>AI</b>應(yīng)用

    RAG實(shí)踐:一文掌握大模型RAG過(guò)程

    RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成), 一種AI框架,將傳統(tǒng)的信息檢索系統(tǒng)(例如數(shù)據(jù)庫(kù))的優(yōu)勢(shì)與生成式大語(yǔ)言模型(LLM)的功能結(jié)合在一起。不再
    的頭像 發(fā)表于 10-27 18:23 ?1572次閱讀
    <b class='flag-5'>RAG</b>實(shí)踐:一文掌握大模型<b class='flag-5'>RAG</b>過(guò)程

    學(xué)生適合使用的SOLIDWORKS 云應(yīng)用程序

    隨著科技的不斷發(fā)展,計(jì)算機(jī)輔助設(shè)計(jì)(CAD)技術(shù)已經(jīng)成為現(xiàn)代工程教育的重要組成部分。SOLIDWORKS作為一款CAD軟件,其教育版云應(yīng)用程序為學(xué)生提供了強(qiáng)大而靈活的設(shè)計(jì)平臺(tái)。本文將探討
    的頭像 發(fā)表于 09-15 10:39 ?794次閱讀
    學(xué)生適合使用的SOLIDWORKS 云<b class='flag-5'>應(yīng)用程序</b>

    請(qǐng)問(wèn)是否可以在通用Windows平臺(tái)中構(gòu)建OpenVINO? GenAI C++ 應(yīng)用程序

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

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】Redis最新8.0.2版本源碼安裝及性能測(cè)試

    )的有三個(gè)可執(zhí)行程序,分別為: redis-server Redis服務(wù)程序,用于提供服務(wù); redis-benchmark
    發(fā)表于 06-03 01:28

    AI應(yīng)用如何不被淘汰?深耕RAG與數(shù)據(jù)底座是關(guān)鍵

    詞)包裝層應(yīng)用,這些應(yīng)用通過(guò)設(shè)計(jì)提示詞調(diào)用大模型基礎(chǔ)能力,但沒(méi)有構(gòu)建更深層次業(yè)務(wù)價(jià)值。因?yàn)閼?yīng)用的價(jià)值主要靠大模型的原始能力,所以很容易被不斷變強(qiáng)的大模型取代。 如何開發(fā)出不容易被大模型“抄家”的AI應(yīng)用? 對(duì)此,英特爾技術(shù)專家認(rèn)為
    的頭像 發(fā)表于 05-23 16:26 ?500次閱讀
    <b class='flag-5'>AI</b>應(yīng)用如何不被淘汰?深耕<b class='flag-5'>RAG</b>與數(shù)據(jù)底座是關(guān)鍵

    HarmonyOS5云服務(wù)技術(shù)分享--云緩存快速上手指南

    ??: spring.redis.host=agcp-drcn.hispace.dbankcloud.cn spring.redis.port=16380 spring.redis
    發(fā)表于 05-22 18:37

    【「零基礎(chǔ)開發(fā)AI Agent」閱讀體驗(yàn)】+ 入門篇學(xué)習(xí)

    工程、RAG技術(shù)、和AI Agent是3個(gè)重要方面。其中AI Agent作為2024年最新興的技術(shù)領(lǐng)域,具備很好的應(yīng)用前景,本書對(duì)零基礎(chǔ)小白普及和應(yīng)用AI Agent有著很好的指導(dǎo)作用
    發(fā)表于 05-02 09:26

    如何在基于Arm Neoverse平臺(tái)的Google Axion處理器上構(gòu)建RAG應(yīng)用

    你是否好奇如何防止人工智能 (AI) 聊天機(jī)器人給出過(guò)時(shí)或不準(zhǔn)確的答案?檢索增強(qiáng)生成 (Retrieval-Augmented Generation, RAG) 技術(shù)提供了一種強(qiáng)大的解決方案,能夠顯著提升答案的準(zhǔn)確性和相關(guān)性。
    的頭像 發(fā)表于 04-28 14:34 ?1094次閱讀
    如何在基于Arm Neoverse平臺(tái)的Google Axion處理器上<b class='flag-5'>構(gòu)建</b><b class='flag-5'>RAG</b>應(yīng)用

    DevEco Studio AI輔助開發(fā)工具兩大升級(jí)功能 鴻蒙應(yīng)用開發(fā)效率再提升

    開發(fā)者的喜愛。 應(yīng)廣大開發(fā)者的需求建議,我們最近又對(duì)CodeGenie進(jìn)行了一次升級(jí),不僅針對(duì)DeepSeek-R1新增支持鴻蒙知識(shí)RAG能力,還上線了代碼解釋功能,持續(xù)拓展AI在輔助鴻蒙應(yīng)用開發(fā)全流程
    發(fā)表于 04-18 14:43

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(一般一個(gè)redis節(jié)點(diǎn)不超過(guò)10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?1541次閱讀
    <b class='flag-5'>redis</b>三種集群方案詳解

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

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

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

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