国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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ù)的不斷進步,開發(fā)者面臨著如何有效利用現(xiàn)有工具和技術(shù)來加速開發(fā)過程的挑戰(zhàn)。Redis與Spring AI的結(jié)合為Java開發(fā)者提供了一個強大的平臺,以便快速構(gòu)建并部署響應(yīng)式AI應(yīng)用。探索這一整合如何通過簡化的開發(fā)流程,讓開發(fā)者能夠更專注于創(chuàng)新而非底層實現(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)用程序的選項還相對有限。而最近,Redis作為一種高性能的向量數(shù)據(jù)庫方案,現(xiàn)已引起廣泛關(guān)注。Spring社區(qū)推出了一個名為Spring?AI的新項目,旨在簡化人工智能應(yīng)用程序特別是那些涉及向量數(shù)據(jù)庫的應(yīng)用的開發(fā)流程。

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

二、檢索增強生成

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

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

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

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

本項目使用了Spring Boot作為Web應(yī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 類實現(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)實現(xiàn)了 RAG 服務(wù),可以將其封裝在 HTTP 端點中。

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

@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}端點發(fā)送 HTTP 請求并顯示響應(yīng)來與 Spring 后端交互。

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

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

若要更進一步,我們建議您查看?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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    39489

    瀏覽量

    300680
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15888
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    390

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    RAG(檢索增強生成)原理與實踐

    持續(xù)迭代 :基于用戶反饋和評估結(jié)果不斷改進 選擇合適的工具棧 :根據(jù)實際需求選擇Embedding模型、向量數(shù)據(jù)庫和LLM RAG技術(shù)正在快速發(fā)展,掌握其原理與實踐,將幫助你構(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 開放模型集合無縫連接,這使您能夠在云端或本地環(huán)境中基于自己的數(shù)據(jù)構(gòu)建高性
    的頭像 發(fā)表于 12-01 09:31 ?746次閱讀
    使用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實踐:一文掌握大模型RAG過程

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

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

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

    使用 llm-agent-rag-llamaindex 筆記本時收到的 NPU 錯誤怎么解決?

    使用 conda create -n ov-nb-demos python=3.11 創(chuàng)建運行 llm-agent-rag-llamaindex notebook 的環(huán)境。 執(zhí)行“創(chuàng)建
    發(fā)表于 06-23 06:26

    【幸狐Omni3576邊緣計算套件試用體驗】Redis最新8.0.2版本源碼安裝及性能測試

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

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

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

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

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

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

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

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

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

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

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

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

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

    使用Ozone調(diào)試基于nRF9160 Zephyr應(yīng)用程序

    Ozone是SEGGER免費的嵌入式軟件調(diào)試器。它是一個強大的工具,可以讓你深入了解嵌入式系統(tǒng)中發(fā)生的事情。它在調(diào)試nRF9160 Zephyr應(yīng)用程序時特別有用。整理多個線程和多映像構(gòu)建可能很困難,但這就是你想要的工具。
    的頭像 發(fā)表于 02-25 17:07 ?1736次閱讀
    使用Ozone調(diào)試基于nRF9160 Zephyr<b class='flag-5'>應(yīng)用程序</b>

    利用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 ?3331次閱讀
    利用OpenVINO和LlamaIndex工具<b class='flag-5'>構(gòu)建</b>多模態(tài)<b class='flag-5'>RAG</b>應(yīng)用