在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Redis和Spring?Ai構建rag應用程序

虹科網絡可視化技術 ? 2024-04-29 08:04 ? 次閱讀

隨著AI技術的不斷進步,開發者面臨著如何有效利用現有工具和技術來加速開發過程的挑戰。Redis與Spring AI的結合為Java開發者提供了一個強大的平臺,以便快速構建并部署響應式AI應用。探索這一整合如何通過簡化的開發流程,讓開發者能夠更專注于創新而非底層實現。

一、Spring AI 簡介

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

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

下面將介紹如何使用Redis作為向量數據庫構建一個Spring AI應用程序,實現檢索增強生成(RAG)工作流。

二、檢索增強生成

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

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

三、代碼和依賴關系

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

本項目使用了Spring Boot作為Web應用程序的啟動依賴項,并結合了Azure OpenAI和Spring?AI?Redis。

四、數據加載

我們的應用程序將采用提供啤酒信息的JSON文檔作為數據來源。每個文檔的結構如下:

{ "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}

為了將啤酒數據集加載到 Redis 中,我們將使用 RagDataLoader 類。該類包含一個方法,在應用程序啟動時執行。在該方法中,我們使用一個 JsonReader 來解析數據集,然后使用自動連接的?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種啤酒及其相應嵌入的數據集。

五、RAGService

RagService 類實現了 RAG 工作流程。當收到用戶提示時,會調用 retrieve 方法,執行以下步驟:

計算用戶提示的向量

查詢Redis數據庫,檢索最相關的文檔

使用檢索到的文檔和用戶提示構建一個提示信息

使用提示調用聊天客戶端以生成響應

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

現在我們已經實現了 RAG 服務,可以將其封裝在 HTTP 端點中。

RagController 類將服務作為 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());}

七、用戶界面

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

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

僅通過簡單的幾個類,我們就用 Spring AI 和 Redis 實現了一個 RAG 應用程序。

若要更進一步,我們建議您查看?Github?上的示例代碼。將 Redis 的高效和易用性與 Spring AI 提供的便捷抽象相結合,Java 開發人員使用 Spring 構建響應式 AI 應用程序將變得更加容易。

有關向量數據庫的更多信息,歡迎與我們溝通交流~

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    33441

    瀏覽量

    273979
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14765
  • Redis
    +關注

    關注

    0

    文章

    381

    瀏覽量

    11229
收藏 人收藏

    評論

    相關推薦

    DevEco Studio AI輔助開發工具兩大升級功能 鴻蒙應用開發效率再提升

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

    如何在 Raspberry Pi AI Camera 上構建為開發人員提供實時的智能應用程序

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

    MCP:連接AI應用程序的開放標準!

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

    AI Agent 應用與項目實戰》閱讀心得3——RAG架構與部署本地知識庫

    技術不僅解決了LLM的知識更新問題,更為構建專業領域的智能問答系統提供了完整的技術方案。通過與向量數據庫的深度集成,RAG實現了知識的動態擴展和精準檢索,這種架構設計為AI系統的持續進化提供了可能。在
    發表于 03-07 19:49

    利用OpenVINO和LlamaIndex工具構建多模態RAG應用

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

    【「基于大模型的RAG應用開發與優化」閱讀體驗】RAG基本概念

    RAG應用架構具備清晰的分層設計。知識庫構建層,著重于將各類非結構化數據進行有效處理,轉化為計算機能夠理解的形式,通過向量化編碼技術為數據賦予數字特征,并建立動態索引以便快速查詢更新。檢索增強層,采用
    發表于 02-08 00:22

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+第一章初體驗

    機制。 《基于大模型的RAG應用開發與優化》第一章以清晰的邏輯框架,幫助讀者建立對大模型與RAG的全局認知。通過剖析技術原理、優勢與挑戰,作者為后續章節的實踐內容奠定了基礎。對于開發者而言,掌握RAG技術不僅是提升模型性能的
    發表于 02-07 10:42

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+Embedding技術解讀

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

    Redis緩存與Memcached的比較

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

    RAG的概念及工作原理

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

    Cloudera推出RAG Studio,助力企業快速部署聊天機器人

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

    使用OpenVINO和LlamaIndex構建Agentic-RAG系統

    RAG 系統的全稱是 Retrieval-augmented Generation,本質上是 Prompt Engineering,通過在 Prompt 中注入檢索得到的外部數據,可以有效地
    的頭像 發表于 10-12 09:59 ?590次閱讀
    使用OpenVINO和LlamaIndex<b class='flag-5'>構建</b>Agentic-<b class='flag-5'>RAG</b>系統

    使用OpenVINO GenAI API在C++中構建AI應用程序

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

    Spring Cloud Gateway網關框架

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

    英特爾軟硬件構建模塊如何幫助優化RAG應用

    軟硬件構建模塊如何幫助優化RAG應用,在簡化部署和支持擴展的同時,增強其上下文感知能力和實時響應性能。 1 為您的應用量身定制GenAI ChatGPT的面世改變了AI的發展格局。企業爭相利用這項新技術
    的頭像 發表于 07-24 15:12 ?695次閱讀
    英特爾軟硬件<b class='flag-5'>構建</b>模塊如何幫助優化<b class='flag-5'>RAG</b>應用
    主站蜘蛛池模板: 黄色在线观看视频网站 | 永久免费看黄 | 美女扒开内裤无遮挡禁18 | 亚洲一卡2卡3卡4卡5卡乱码 | 欧美色吧视频在线观看 | 国产高清视频在线播放www色 | 九九视频只有精品 | 永久免费看www色视频 | 在线免费观看你懂的 | 久久国产乱子伦精品免 | 国产成视频 | 级毛片| 国产高清亚洲 | 全部免费a级毛片 | 男人女人的免费视频网站 | 亚洲一级特黄特黄的大片 | 噜噜噜噜噜久久久久久91 | 午夜小影院 | a亚洲| 三级网站在线看 | 成人综合色站 | 3344成年在线视频免费播放男男 | 欧美一级日韩在线观看 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 七月色婷婷 | 日本高清色www | 亚洲区免费 | 亚洲1314| 欧美一二 | 午夜综合 | 国产精品欧美激情第一页 | 视频一区二区不卡 | 欧美一欧美一区二三区性 | 亚洲综合久久久 | 三级aa久久| 久久青草免费91观看 | 拍拍拍美女黄色1000视频 | 欧美午夜视频在线 | 亚洲日本在线观看 | 黄色字幕网 | 午夜黄色小视频 |