一、RAG 的四大核心步驟

第一、文檔切割與智能檔案庫的建立

核心任務是將大量文檔轉化為易于檢索的知識碎片,這一過程類似于將厚重的詞典拆解成單詞卡片。通過采用智能分塊算法,保持語義連貫性,同時給每個知識碎片打上標簽(如“技術規格”、“操作指南”)。這一步驟的關鍵價值在于,優質的知識切割如同圖書館的分類系統,決定了檢索效率。

第二、向量編碼與語義地圖的構建

利用 AI 大模型將文字轉化為數學向量,使語義相近的內容產生相似的數學特征。所有向量存入專用數據庫,并建立快速檢索索引,這類似于圖書館的書目檢索系統。例如,“續航時間”和“電池容量”會被編碼為相似向量。

第三、相似檢索與智能資料獵人

應答觸發流程包括將用戶問題轉為“問題向量”,并通過多維度匹配策略搜索知識庫,包括語義相似度、關鍵詞匹配度和時效性權重,輸出指定個數的最相關文檔片段。

第四、生成增強與專業報告撰寫

應答構建過程中,將檢索結果作為指定參考資料,AI 大模型在生成時自動關聯相關知識片段。輸出形式可以包含自然語言回答和附參考資料溯源路徑。例如,“根據《產品說明技術手冊 V1.3》第2章內容:該設備續航時間為…”。

二、Spring AI Alibaba 模塊化 RAG 增強

第一、Multi Query Expansion (多查詢擴展)

查詢擴展技術對于增強 RAG 系統的搜索效能至關重要。在現實操作中,用戶提交的查詢往往簡潔且信息量有限,這可能會影響搜索結果的精確度和全面性。Spring AI Alibaba 提供了一種高效的查詢擴展功能,能夠自動產生多個相關的查詢版本,進而提升搜索的精確度和覆蓋率。

// 創建聊天客戶端實例// 設置系統提示信息,定義AI助手作為專業的室內設計顧問角色ChatClient chatClient = builder        .defaultSystem("你是一位專業的室內設計顧問,精通各種裝修風格、材料選擇和空間布局。請基于提供的參考資料,為用戶提供專業、詳細且實用的建議。在回答時,請注意:n" +                "1. 準確理解用戶的具體需求n" +                "2. 結合參考資料中的實際案例n" +                "3. 提供專業的設計理念和原理解釋n" +                "4. 考慮實用性、美觀性和成本效益n" +                "5. 如有需要,可以提供替代方案")        .build();
// 構建查詢擴展器// 用于生成多個相關的查詢變體,以獲得更全面的搜索結果MultiQueryExpander queryExpander = MultiQueryExpander.builder() .chatClientBuilder(builder) .includeOriginal(false) // 不包含原始查詢 .numberOfQueries(3) // 生成3個查詢變體 .build();
// 執行查詢擴展// 將原始問題"請提供幾種推薦的裝修風格?"擴展成多個相關查詢List queries = queryExpander.expand( new Query("請提供幾種推薦的裝修風格?"));

在這一過程中,系統將自主地構造出多個相關的查詢版本。例如,當用戶提出“請提供幾種推薦的室內裝修風格?”的查詢時,系統將生成多個從不同視角出發的查詢。這種方法不僅增強了搜索結果的廣度,還能夠揭示用戶潛在的查詢目的。

多查詢擴展的效果如下:

擴展后的查詢內容:1. 哪些裝修風格最受歡迎?請推薦一些。2. 能否推薦一些流行的家居裝修風格?3. 想了解不同的裝修風格,有哪些是值得推薦的?

多查詢擴展的優勢主要體現在以下幾個方面:

第二、Query Rewrite (查詢重寫)

查詢改寫是 RAG 系統中的一項關鍵優化手段,它通過將用戶的原始查詢轉化為更加規范和明確的查詢形式,從而提升搜索的精確度,并協助系統更準確地把握用戶的真正需求。

Spring AI Aliaba 通過提供 RewriteQueryTransformer 這一工具來實現查詢改寫功能。以下是一個具體的操作示例:

// 構建一個模擬用戶在學習人工智能過程中的查詢場景Query query = new Query("我在學習人工智能,能否解釋一下什么是大型語言模型?");
// 實例化查詢改寫轉換器QueryTransformer queryTransformer = RewriteQueryTransformer.builder() .chatClientBuilder(builder) // 假設builder是之前定義好的ChatClient構建器 .build();
// 執行查詢改寫操作Query transformedQuery = queryTransformer.transform(query);
// 打印改寫后的查詢內容System.out.println(transformedQuery.text());

經過改寫,查詢可能會優化為:

“什么是大型語言模型?”

查詢改寫的主要優勢包括:

這種改寫不僅有助于系統檢索到更加相關的文檔,同時也能夠輔助生成更為全面和專業的答復。

第三、Query Translation (查詢翻譯)

查詢翻譯是 RAG 系統中的一項便捷功能,它允許將用戶的查詢從一個語言版本轉換為另一個語言版本。這項功能對于實現多語言支持和執行跨語言搜索查詢尤其重要。Spring AI Aliabab 通過 TranslationQueryTransformer 工具來實現查詢的翻譯功能。

以下是使用該功能的示例代碼:

// 初始化一個英文的查詢實例Query query =newQuery("What is LLM?");
// 實例化查詢翻譯轉換器,并指定目標語言為中文QueryTransformer queryTransformer =TranslationQueryTransformer.builder().chatClientBuilder(builder)// 假設builder是已定義的聊天客戶端構建器.targetLanguage("zh")// 設置目標語言代碼為中文.build();
// 執行查詢的翻譯操作Query translatedQuery = queryTransformer.transform(query);
// 打印出翻譯后的查詢內容System.out.println(translatedQuery.text());

執行上述代碼后,查詢將被翻譯為:

“什么是大語言模型?”

查詢翻譯功能的主要優勢包括:

第四、Context-aware Queries (上下文感知查詢)

在真實的對話場景中,用戶的提問經常基于之前的交流內容。為了展示如何實現上下文感知的查詢,我們來看一個關于房地產咨詢的例子:

// 創建一個包含歷史對話的查詢實例// 這個示例模擬了一個用戶咨詢房地產的場景,用戶首先詢問了小區的位置,隨后詢問房價Query query =Query.builder().text("那么這個小區的二手房平均價格是多少?")// 用戶當前的問題.history(newUserMessage("深圳市南山區的碧海灣小區具體位置是?"),// 用戶之前的問題newAssistantMessage("碧海灣小區坐落于深圳市南山區后海中心區,靠近后海地鐵站。"))// 系統之前的答復.build();

在這個示例中:

如果不考量上下文,系統可能無法識別“這個小區”具體指代的是哪個小區。為解決這一問題,我們利用 CompressionQueryTransformer 來處理上下文信息:

// 初始化查詢轉換器// QueryTransformer負責將含有上下文的查詢轉換為一個完整的獨立查詢QueryTransformer queryTransformer = CompressionQueryTransformer.builder().chatClientBuilder(builder)// 假設builder是之前定義好的聊天客戶端構建器.build();
// 執行查詢轉換操作// 將不明確的指代(“這個小區”)轉換為具體的實體名稱(“碧海灣小區”)Query transformedQuery = queryTransformer.transform(query);

轉換后的查詢可能變為更加明確的形式,例如:“深圳市南山區碧海灣小區的二手房平均價格是多少?”。這種轉換方式具有以下優點:

輸出的查詢: “深圳市南山區碧海灣小區的二手房平均價格是多少?”

第五、文檔合并器(DocumentJoiner)

在現實世界的應用程序中,我們常常面臨從不同的查詢或數據源中收集文檔的需求。為了高效地管理和整合這些文檔,Spring AI 提供了 ConcatenationDocumentJoiner 這一文檔合并工具。此工具能夠智能地將來自多個來源的文檔合并成一個統一的文檔集合。

文檔合并器的核心特性包括:

以下是一個具體的使用示例:

// 獲取來自多個查詢或數據源的文檔集合Map<Query,List<List>> documentsMap =...;
// 實例化文檔合并器DocumentJoiner documentJoiner = newConcatenationDocumentJoiner();
// 執行文檔合并操作List mergedDocuments = documentJoiner.join(documentsMap);

這種合并機制在以下幾種場景中尤其有用:

通過使用 ConcatenationDocumentJoiner,可以確保文檔集合的整合過程既高效又準確,從而提升整體的信息檢索和處理能力。

除了以上5中模塊化 RAG 增強外,Spring AI Alibaba 還提供了檢索增強顧問(RetrievalAugmentationAdvisor)和 Document Selection (文檔選擇)以及 Error Handling and Edge Cases (錯誤處理和邊界情況)等強大功能。

三、__Spring AI Alibaba 結構化 RAG 最佳實踐__

在部署和運行 RAG 系統過程中,我們需要從多個方面來優化系統性能。以下是一份全面的優化指南

第一、文檔處理優化策略

1、文檔結構優化

2、文檔切割策略

第二、檢索增強策略

1、多查詢擴展

2、查詢重寫和翻譯

第三、系統配置優化策略

1、向量存儲配置

SimpleVectorStore vectorStore = SimpleVectorStore.builder(embeddingModel) .build();

2、檢索器配置

DocumentRetriever retriever = VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .similarityThreshold(0.5) // 相似度閾值 .topK(3) // 返回文檔數量 .build();

第四、錯誤處理機制

1、異常處理

2、邊界情況處理

ContextualQueryAugmenter.builder().allowEmptyContext(true).build()

第五、系統角色設定

1、AI 助手配置

ChatClient chatClient = builder.defaultSystem("你是一位專業的顧問,請注意:n"+"1. 準確理解用戶需求n"+"2. 結合參考資料n"+"3. 提供專業解釋n"+"4. 考慮實用性n"+"5. 提供替代方案").build();

第六、性能優化建議

1、查詢優化

2、資源管理

通過遵循以上最佳實踐,可以構建一個高效、可靠的 RAG 系統,為用戶提供準確和專業的回答。這些實踐涵蓋了從文檔處理到系統配置的各個方面,Spring AI Alibaba 能夠幫助開發者構建更好的 RAG 應用。

文章轉載自:基于 Spring AI Alibaba 的 RAG 架構調優實踐

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
返回頂部
上一篇
AI生成內容檢測API已上線
下一篇
5 大最佳開源語音識別引擎與api
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
亚洲欧美在线视频观看| 色素色在线综合| 欧美一级理论片| 成人污视频在线观看| 亚洲成a人片综合在线| 国产精品你懂的在线欣赏| 日韩欧美国产成人一区二区| 91视频免费看| 色综合久久中文综合久久97 | 日韩电影一区二区三区四区| 欧美激情综合五月色丁香| 精品卡一卡二卡三卡四在线| 欧美日韩成人综合在线一区二区| 99re这里只有精品6| 成人一区二区三区在线观看| 国产精选一区二区三区| 韩国av一区二区三区在线观看| 免费成人你懂的| 捆绑紧缚一区二区三区视频| 亚洲成av人片| 免费成人在线视频观看| 国产尤物一区二区| 成人一级片网址| 99久久99久久免费精品蜜臀| 成人黄色一级视频| 91蜜桃视频在线| 欧美一区二区在线视频| 日韩一区二区在线免费观看| 欧美va亚洲va香蕉在线| 久久综合九色综合欧美亚洲| 国产日韩v精品一区二区| 国产精品麻豆视频| 亚洲一区二区欧美日韩| 日韩成人午夜精品| 成人一区在线看| 在线观看国产精品网站| 欧美一区午夜精品| 国产精品久久二区二区| 日一区二区三区| 高清beeg欧美| 91精品国产欧美一区二区成人| 久久久www成人免费毛片麻豆| 国产精品毛片高清在线完整版| 亚洲一区二区免费视频| 久久99久国产精品黄毛片色诱| 成人午夜看片网址| 日韩一区二区中文字幕| 国产精品美女久久久久高潮| 亚洲成av人片在线观看无码| 成人开心网精品视频| 日韩午夜激情视频| 亚洲成人三级小说| fc2成人免费人成在线观看播放| 欧美在线一二三| 国产精品久久三区| 国内国产精品久久| 91精品国产入口在线| 亚洲黄色在线视频| 国产精品影视在线观看| 91精品国产综合久久精品性色| 国产精品视频一区二区三区不卡 | 国产精品99久久久久久宅男| 欧美亚洲一区二区在线观看| 中文字幕 久热精品 视频在线| 日韩av电影一区| 欧美视频完全免费看| 中文字幕一区二区日韩精品绯色| 极品尤物av久久免费看| 日韩三级电影网址| 日韩精品电影在线观看| 欧美日韩久久不卡| 亚洲午夜视频在线| 在线影视一区二区三区| 1000部国产精品成人观看| 懂色av一区二区在线播放| 久久久三级国产网站| 极品美女销魂一区二区三区免费| 91精品国产综合久久久久久久| 亚洲综合激情另类小说区| 色综合天天视频在线观看 | 一区二区三区高清| 91丨porny丨国产入口| 1024亚洲合集| 日本久久电影网| 午夜不卡av在线| 日韩一区二区电影| 国产一区激情在线| 国产精品人成在线观看免费| 成人黄色在线看| 一区二区三区视频在线看| 在线视频一区二区三区| 五月综合激情网| 日韩精品中文字幕在线不卡尤物| 麻豆一区二区三区| 中文字幕av资源一区| 在线免费亚洲电影| 轻轻草成人在线| 国产欧美日韩另类一区| 91福利在线看| 激情综合五月天| 亚洲同性同志一二三专区| 欧美精品xxxxbbbb| 国产高清不卡一区| 天天影视网天天综合色在线播放 | 国产欧美日本一区视频| 色综合天天性综合| 美女视频黄 久久| 国产精品卡一卡二| 欧美一区在线视频| 9i看片成人免费高清| 午夜欧美大尺度福利影院在线看| 精品久久久久久久人人人人传媒| 国产成人在线网站| 日韩电影在线观看一区| 国产精品免费久久| 欧美电影免费提供在线观看| 91免费看`日韩一区二区| 麻豆久久一区二区| 亚洲国产一区二区视频| 国产精品视频一二三| 日韩美女一区二区三区| 欧美性受xxxx黑人xyx性爽| 国产91精品久久久久久久网曝门| 亚洲成人激情综合网| 亚洲欧洲三级电影| 国产亚洲精品7777| 精品美女在线观看| 51精品秘密在线观看| 在线欧美日韩国产| 91老师片黄在线观看| 成人一区在线看| 国产精品综合二区| 精品亚洲porn| 国产一级精品在线| 美腿丝袜亚洲色图| 美国毛片一区二区三区| 日韩**一区毛片| 免费在线成人网| 久久精品久久综合| 伦理电影国产精品| 国内精品自线一区二区三区视频| 日本欧美久久久久免费播放网| 亚洲一二三四区不卡| 亚洲一区二区视频在线观看| 一区二区三区四区中文字幕| 亚洲黄色在线视频| 午夜av电影一区| 久久精品久久99精品久久| 久久国产生活片100| 国产在线精品一区二区不卡了 | 日本中文一区二区三区| 五月综合激情网| 激情文学综合丁香| 成人美女视频在线观看| 色综合 综合色| 欧美高清dvd| 26uuu国产日韩综合| 久久久国产精华| 亚洲美女屁股眼交| 天天操天天色综合| 精品一区二区免费| 成人国产精品免费网站| 99re免费视频精品全部| 欧美日韩欧美一区二区| 精品国产乱码久久久久久影片| 久久精品日韩一区二区三区| 欧美国产精品专区| 天堂久久一区二区三区| 国产一区二区三区视频在线播放| 高清视频一区二区| 欧美影院午夜播放| 久久免费偷拍视频| 亚洲午夜久久久久久久久电影网| 麻豆国产欧美日韩综合精品二区 | jlzzjlzz亚洲日本少妇| 一本一道波多野结衣一区二区 | 亚洲日本韩国一区| 久久国产精品色婷婷| 91免费在线播放| 久久婷婷色综合| 亚洲午夜久久久久| 不卡一区二区三区四区| 欧美精品tushy高清| 中文字幕五月欧美| 国产一区二区三区观看| 欧美日韩久久一区| 亚洲免费在线视频| 粉嫩蜜臀av国产精品网站| 日韩午夜在线观看视频| 亚洲一卡二卡三卡四卡五卡| 高清国产一区二区| 久久久www免费人成精品| 美国欧美日韩国产在线播放| 在线视频国内一区二区| 国产精品久久久久天堂| 国内精品伊人久久久久av一坑| 欧美日本在线一区| 亚洲成a人片综合在线| 91成人在线观看喷潮| 亚洲激情五月婷婷|