日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

一、Spring AI 簡介

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

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

下面將介紹如何使用Redis作為向量數(shù)據(jù)庫構(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ù)庫(例如Redis)。接收到用戶查詢后,向量數(shù)據(jù)庫會(huì)檢索出一組與查詢相似的文檔。這些文檔將作為解答用戶問題的上下文,并結(jié)合用戶的查詢,通常通過人工智能模型來生成響應(yīng)。

本例中,我們將利用一個(gè)包含各類啤酒信息的數(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)用程序的啟動(dòng)依賴項(xiàng),并結(jié)合了Azure OpenAI和Spring?AI?Redis。

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

我們的應(yīng)用程序?qū)⒉捎锰峁┢【菩畔⒌腏SON文檔作為數(shù)據(jù)來源。每個(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 來解析數(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ù)庫,檢索最相關(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è)簡單的 React 前端,允許用戶提出有關(guān)啤酒的問題。前端通過向/chat/{chatId}端點(diǎn)發(fā)送 HTTP 請(qǐng)求并顯示響應(yīng)來與 Spring 后端交互。

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

僅通過簡單的幾個(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ù)庫的更多信息,歡迎與我們溝通交流~

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

    關(guān)注

    91

    文章

    41305

    瀏覽量

    302685
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    16060
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    394

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    黑馬-Java+AI新版V16零基礎(chǔ)就業(yè)班百度云網(wǎng)盤下載+Java+AI全棧開發(fā)工程師

    傳統(tǒng)開發(fā)升級(jí),Java+AI 融合開發(fā)精講——構(gòu)建下一代企業(yè)級(jí)智能應(yīng)用的技術(shù)棧重塑 在人工智能加速滲透至各行各業(yè)的當(dāng)下,Java 開發(fā)者正面臨一個(gè)關(guān)鍵轉(zhuǎn)折點(diǎn):要么被動(dòng)旁觀 AI 能力的邊緣化集成
    發(fā)表于 05-01 11:29

    [完結(jié)15章]Java轉(zhuǎn) AI高薪領(lǐng)域必備-從0到1打通生產(chǎn)級(jí)AI Agent開發(fā)

    AI瞬間完成時(shí),僅憑對(duì)Spring Boot框架的熟練度已無法構(gòu)建職業(yè)護(hù)城河。Java工程師若想拒絕原地踏步,絕不是簡單地學(xué)一學(xué)Python或調(diào)用幾個(gè)API,而是必須將自身深厚的工程化底座與大模型的認(rèn)知
    發(fā)表于 04-30 13:46

    Java轉(zhuǎn) AI高薪領(lǐng)域必備 從0到1打通生產(chǎn)級(jí)AI Agent開發(fā) 教程資料

    告別CRUD內(nèi)卷的經(jīng)濟(jì)學(xué):Java程序員轉(zhuǎn)型AI Agent的商業(yè)重構(gòu) 在當(dāng)前的IT職場生態(tài)中,一個(gè)令人不寒而栗的現(xiàn)象正在上演:傳統(tǒng)Java CRUD(增刪改查)開發(fā)者的薪資溢價(jià)正在被系統(tǒng)性抹平
    發(fā)表于 04-29 17:08

    高質(zhì)量RAG系統(tǒng)的五個(gè)核心設(shè)計(jì)要點(diǎn)

    檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG)已成為構(gòu)建大模型應(yīng)用的標(biāo)準(zhǔn)架構(gòu)。然而,大多數(shù)RAG系統(tǒng)在設(shè)計(jì)初期會(huì)因?yàn)楹雎院诵脑O(shè)計(jì)原則而在實(shí)際部署中暴露嚴(yán)重問題。本文從工程實(shí)踐角度出發(fā),梳理
    的頭像 發(fā)表于 04-24 14:42 ?176次閱讀

    構(gòu)建示例應(yīng)用程序MCSPTR2AK396的問題求解

    顯示任何消息。 此外,如果我選擇“更新代碼”,則所有驅(qū)動(dòng)程序都將從項(xiàng)目中刪除。 關(guān)于我遺漏了什么有什么提示嗎? 安裝的軟件堆棧與示例應(yīng)用程序的發(fā)行說明中測試的軟件堆棧幾乎相同 Design
    發(fā)表于 04-20 13:11

    Redis應(yīng)用監(jiān)控指標(biāo)大盤點(diǎn)

    Redis作為高性能內(nèi)存數(shù)據(jù)庫,廣泛應(yīng)用于緩存、會(huì)話存儲(chǔ)、消息隊(duì)列等場景。對(duì)Redis運(yùn)行狀況的有效監(jiān)控,是保障業(yè)務(wù)穩(wěn)定性的關(guān)鍵。本文的目的是幫助運(yùn)維工程師建立完整的Redis監(jiān)控知識(shí)體系,講解需要監(jiān)控哪些指標(biāo)、如何采集這些指標(biāo)
    的頭像 發(fā)表于 04-09 10:07 ?178次閱讀

    如何構(gòu)建藍(lán)牙應(yīng)用程序?

    應(yīng)用程序使用藍(lán)牙(blueZ)。 我已經(jīng)安裝了 gcc-riscv64-linux-gnu。 但是,沒有安裝 blueZ 標(biāo)頭和庫。 如何構(gòu)建我的藍(lán)牙應(yīng)用程序?
    發(fā)表于 04-01 07:31

    RAG、MCP與智能體:大模型落地的三道關(guān)

    大模型能力越來越強(qiáng),但落地沒那么快。從單次對(duì)話到多步任務(wù),中間隔著系統(tǒng)工程。這篇文章聊三個(gè)繞不開的技術(shù)方向:RAG、MCP和智能體。 一、RAG:讓模型學(xué)會(huì)翻資料 大模型的知識(shí)截止于訓(xùn)練時(shí)刻,這是
    的頭像 發(fā)表于 03-19 13:55 ?150次閱讀

    請(qǐng)問如何構(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ù)庫和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 開放模型集合無縫連接,這使您能夠在云端或本地環(huán)境中基于自己的數(shù)據(jù)構(gòu)建高性
    的頭像 發(fā)表于 12-01 09:31 ?1082次閱讀
    使用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過程

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

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

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

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

    )的有三個(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)用通過設(shè)計(jì)提示詞調(diào)用大模型基礎(chǔ)能力,但沒有構(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 ?585次閱讀
    <b class='flag-5'>AI</b>應(yīng)用如何不被淘汰?深耕<b class='flag-5'>RAG</b>與數(shù)據(jù)底座是關(guān)鍵
    谷城县| 白城市| 眉山市| 渝北区| 安顺市| 正安县| 弥勒县| 海安县| 哈尔滨市| 温泉县| 兴隆县| 略阳县| 高邑县| 吐鲁番市| 沐川县| 大姚县| 江川县| 磐石市| 修文县| 册亨县| 安化县| 兰溪市| 湛江市| 星座| 汪清县| 汉沽区| 乌拉特前旗| 海兴县| 师宗县| 盐源县| 古田县| 桓仁| 冕宁县| 龙口市| 五家渠市| 比如县| 花莲市| 葵青区| 嘉峪关市| 荥阳市| 乌兰浩特市|