偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

基于 Spring AI Alibaba 的 RAG 架構(gòu)調(diào)優(yōu)實(shí)踐 原創(chuàng) 精華

發(fā)布于 2025-5-15 06:27
瀏覽
0收藏

RAG(Retrieval Augmented Generation,檢索增強(qiáng)生成)是一種結(jié)合數(shù)據(jù)工程、信息抽取和文本生成的技術(shù)范式。


基于 Spring AI Alibaba 的 RAG 架構(gòu)調(diào)優(yōu)實(shí)踐-AI.x社區(qū)

Spring AI Alibaba 是阿里巴巴開(kāi)源的 AI 應(yīng)用開(kāi)發(fā)框架,基于 Spring AI 構(gòu)建并提供了更高層面的抽象,幫助開(kāi)發(fā)者快速構(gòu)建 AI 應(yīng)用。

基于 Spring AI Alibaba 的 RAG 架構(gòu)調(diào)優(yōu)實(shí)踐-AI.x社區(qū)

1、RAG 的四大核心步驟

第一、文檔切割與智能檔案庫(kù)的建立

核心任務(wù)是將大量文檔轉(zhuǎn)化為易于檢索的知識(shí)碎片,這一過(guò)程類似于將厚重的詞典拆解成單詞卡片。通過(guò)采用智能分塊算法,保持語(yǔ)義連貫性,同時(shí)給每個(gè)知識(shí)碎片打上標(biāo)簽(如“技術(shù)規(guī)格”、“操作指南”)。這一步驟的關(guān)鍵價(jià)值在于,優(yōu)質(zhì)的知識(shí)切割如同圖書館的分類系統(tǒng),決定了檢索效率。

第二、向量編碼與語(yǔ)義地圖的構(gòu)建

利用 AI 大模型將文字轉(zhuǎn)化為數(shù)學(xué)向量,使語(yǔ)義相近的內(nèi)容產(chǎn)生相似的數(shù)學(xué)特征。所有向量存入專用數(shù)據(jù)庫(kù),并建立快速檢索索引,這類似于圖書館的書目檢索系統(tǒng)。例如,“續(xù)航時(shí)間”和“電池容量”會(huì)被編碼為相似向量。

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

應(yīng)答觸發(fā)流程包括將用戶問(wèn)題轉(zhuǎn)為“問(wèn)題向量”,并通過(guò)多維度匹配策略搜索知識(shí)庫(kù),包括語(yǔ)義相似度、關(guān)鍵詞匹配度和時(shí)效性權(quán)重,輸出指定個(gè)數(shù)的最相關(guān)文檔片段。

第四、生成增強(qiáng)與專業(yè)報(bào)告撰寫

應(yīng)答構(gòu)建過(guò)程中,將檢索結(jié)果作為指定參考資料,AI 大模型在生成時(shí)自動(dòng)關(guān)聯(lián)相關(guān)知識(shí)片段。輸出形式可以包含自然語(yǔ)言回答和附參考資料溯源路徑。例如,“根據(jù)《產(chǎn)品說(shuō)明技術(shù)手冊(cè) V1.3》第2章內(nèi)容:該設(shè)備續(xù)航時(shí)間為...”。

基于 Spring AI Alibaba 的 RAG 架構(gòu)調(diào)優(yōu)實(shí)踐-AI.x社區(qū)

2、Spring AI Alibaba 模塊化 RAG 增強(qiáng)

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

查詢擴(kuò)展技術(shù)對(duì)于增強(qiáng) RAG 系統(tǒng)的搜索效能至關(guān)重要。在現(xiàn)實(shí)操作中,用戶提交的查詢往往簡(jiǎn)潔且信息量有限,這可能會(huì)影響搜索結(jié)果的精確度和全面性。Spring AI Alibaba 提供了一種高效的查詢擴(kuò)展功能,能夠自動(dòng)產(chǎn)生多個(gè)相關(guān)的查詢版本,進(jìn)而提升搜索的精確度和覆蓋率。

// 創(chuàng)建聊天客戶端實(shí)例
// 設(shè)置系統(tǒng)提示信息,定義AI助手作為專業(yè)的室內(nèi)設(shè)計(jì)顧問(wèn)角色
ChatClient chatClient = builder
        .defaultSystem("你是一位專業(yè)的室內(nèi)設(shè)計(jì)顧問(wèn),精通各種裝修風(fēng)格、材料選擇和空間布局。請(qǐng)基于提供的參考資料,為用戶提供專業(yè)、詳細(xì)且實(shí)用的建議。在回答時(shí),請(qǐng)注意:\n" +
                "1. 準(zhǔn)確理解用戶的具體需求\n" +
                "2. 結(jié)合參考資料中的實(shí)際案例\n" +
                "3. 提供專業(yè)的設(shè)計(jì)理念和原理解釋\n" +
                "4. 考慮實(shí)用性、美觀性和成本效益\n" +
                "5. 如有需要,可以提供替代方案")
        .build();


// 構(gòu)建查詢擴(kuò)展器
// 用于生成多個(gè)相關(guān)的查詢變體,以獲得更全面的搜索結(jié)果
MultiQueryExpander queryExpander = MultiQueryExpander.builder()
        .chatClientBuilder(builder)
        .includeOriginal(false) // 不包含原始查詢
        .numberOfQueries(3) // 生成3個(gè)查詢變體
        .build();


// 執(zhí)行查詢擴(kuò)展
// 將原始問(wèn)題"請(qǐng)?zhí)峁追N推薦的裝修風(fēng)格?"擴(kuò)展成多個(gè)相關(guān)查詢
List<Query> queries = queryExpander.expand(
        new Query("請(qǐng)?zhí)峁追N推薦的裝修風(fēng)格?"));

在這一過(guò)程中,系統(tǒng)將自主地構(gòu)造出多個(gè)相關(guān)的查詢版本。例如,當(dāng)用戶提出“請(qǐng)?zhí)峁追N推薦的室內(nèi)裝修風(fēng)格?”的查詢時(shí),系統(tǒng)將生成多個(gè)從不同視角出發(fā)的查詢。這種方法不僅增強(qiáng)了搜索結(jié)果的廣度,還能夠揭示用戶潛在的查詢目的。

多查詢擴(kuò)展的效果如下:

擴(kuò)展后的查詢內(nèi)容:
1. 哪些裝修風(fēng)格最受歡迎?請(qǐng)推薦一些。
2. 能否推薦一些流行的家居裝修風(fēng)格?
3. 想了解不同的裝修風(fēng)格,有哪些是值得推薦的?

多查詢擴(kuò)展的優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面:

  • 提升召回率:通過(guò)生成多個(gè)查詢版本,增加了捕獲相關(guān)文檔的可能性。
  • 多角度覆蓋:從多個(gè)維度理解和拓展用戶的原始查詢內(nèi)容。
  • 加強(qiáng)語(yǔ)義解析:識(shí)別查詢的多重潛在意義及其相關(guān)概念。
  • 改善搜索品質(zhì):綜合多個(gè)查詢結(jié)果,以獲得更加周全的信息集。

第二、Query Rewrite (查詢重寫)

查詢改寫是 RAG 系統(tǒng)中的一項(xiàng)關(guān)鍵優(yōu)化手段,它通過(guò)將用戶的原始查詢轉(zhuǎn)化為更加規(guī)范和明確的查詢形式,從而提升搜索的精確度,并協(xié)助系統(tǒng)更準(zhǔn)確地把握用戶的真正需求。

Spring AI Aliaba 通過(guò)提供 RewriteQueryTransformer 這一工具來(lái)實(shí)現(xiàn)查詢改寫功能。以下是一個(gè)具體的操作示例:

// 構(gòu)建一個(gè)模擬用戶在學(xué)習(xí)人工智能過(guò)程中的查詢場(chǎng)景
Query query = new Query("我在學(xué)習(xí)人工智能,能否解釋一下什么是大型語(yǔ)言模型?");


// 實(shí)例化查詢改寫轉(zhuǎn)換器
QueryTransformer queryTransformer = RewriteQueryTransformer.builder()
        .chatClientBuilder(builder) // 假設(shè)builder是之前定義好的ChatClient構(gòu)建器
        .build();


// 執(zhí)行查詢改寫操作
Query transformedQuery = queryTransformer.transform(query);


// 打印改寫后的查詢內(nèi)容
System.out.println(transformedQuery.text());

經(jīng)過(guò)改寫,查詢可能會(huì)優(yōu)化為:

“什么是大型語(yǔ)言模型?”

查詢改寫的主要優(yōu)勢(shì)包括:

  • 查詢明確化:將含糊不清的問(wèn)題轉(zhuǎn)化為具體的查詢點(diǎn)。

這種改寫不僅有助于系統(tǒng)檢索到更加相關(guān)的文檔,同時(shí)也能夠輔助生成更為全面和專業(yè)的答復(fù)。

第三、Query Translation (查詢翻譯)

查詢翻譯是 RAG 系統(tǒng)中的一項(xiàng)便捷功能,它允許將用戶的查詢從一個(gè)語(yǔ)言版本轉(zhuǎn)換為另一個(gè)語(yǔ)言版本。這項(xiàng)功能對(duì)于實(shí)現(xiàn)多語(yǔ)言支持和執(zhí)行跨語(yǔ)言搜索查詢尤其重要。Spring AI Aliabab 通過(guò) TranslationQueryTransformer 工具來(lái)實(shí)現(xiàn)查詢的翻譯功能。

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

// 初始化一個(gè)英文的查詢實(shí)例
Query query =newQuery("What is LLM?");


// 實(shí)例化查詢翻譯轉(zhuǎn)換器,并指定目標(biāo)語(yǔ)言為中文
QueryTransformer queryTransformer =TranslationQueryTransformer.builder()
.chatClientBuilder(builder)// 假設(shè)builder是已定義的聊天客戶端構(gòu)建器
.targetLanguage("zh")// 設(shè)置目標(biāo)語(yǔ)言代碼為中文
.build();


// 執(zhí)行查詢的翻譯操作
Query translatedQuery = queryTransformer.transform(query);


// 打印出翻譯后的查詢內(nèi)容
System.out.println(translatedQuery.text());

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

“什么是大語(yǔ)言模型?”

查詢翻譯功能的主要優(yōu)勢(shì)包括:

  • 多語(yǔ)言兼容:能夠在不同語(yǔ)言之間進(jìn)行查詢內(nèi)容的轉(zhuǎn)換。
  • 本地化適配:將查詢內(nèi)容適配為目標(biāo)語(yǔ)言的地道表達(dá)方式。
  • 跨語(yǔ)言搜索:使得在不同語(yǔ)言的文檔集合中進(jìn)行有效檢索成為可能。
  • 提升用戶體驗(yàn):用戶可以利用自己熟悉的語(yǔ)言發(fā)起查詢,提高了系統(tǒng)的易用性。

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

在真實(shí)的對(duì)話場(chǎng)景中,用戶的提問(wèn)經(jīng)常基于之前的交流內(nèi)容。為了展示如何實(shí)現(xiàn)上下文感知的查詢,我們來(lái)看一個(gè)關(guān)于房地產(chǎn)咨詢的例子:

// 創(chuàng)建一個(gè)包含歷史對(duì)話的查詢實(shí)例
// 這個(gè)示例模擬了一個(gè)用戶咨詢房地產(chǎn)的場(chǎng)景,用戶首先詢問(wèn)了小區(qū)的位置,隨后詢問(wèn)房?jī)r(jià)
Query query =Query.builder()
.text("那么這個(gè)小區(qū)的二手房平均價(jià)格是多少?")// 用戶當(dāng)前的問(wèn)題
.history(newUserMessage("深圳市南山區(qū)的碧海灣小區(qū)具體位置是?"),// 用戶之前的問(wèn)題
newAssistantMessage("碧海灣小區(qū)坐落于深圳市南山區(qū)后海中心區(qū),靠近后海地鐵站。"))// 系統(tǒng)之前的答復(fù)
.build();

在這個(gè)示例中:

  • 用戶最初詢問(wèn)了碧海灣小區(qū)的位置(歷史問(wèn)題)。
  • 系統(tǒng)提供了該小區(qū)的具體位置信息(歷史回答)。
  • 用戶隨后提問(wèn)關(guān)于該小區(qū)二手房的平均價(jià)格(當(dāng)前問(wèn)題)。

如果不考量上下文,系統(tǒng)可能無(wú)法識(shí)別“這個(gè)小區(qū)”具體指代的是哪個(gè)小區(qū)。為解決這一問(wèn)題,我們利用 CompressionQueryTransformer 來(lái)處理上下文信息:

// 初始化查詢轉(zhuǎn)換器
// QueryTransformer負(fù)責(zé)將含有上下文的查詢轉(zhuǎn)換為一個(gè)完整的獨(dú)立查詢
QueryTransformer queryTransformer = CompressionQueryTransformer.builder()
.chatClientBuilder(builder)// 假設(shè)builder是之前定義好的聊天客戶端構(gòu)建器
.build();


// 執(zhí)行查詢轉(zhuǎn)換操作
// 將不明確的指代(“這個(gè)小區(qū)”)轉(zhuǎn)換為具體的實(shí)體名稱(“碧海灣小區(qū)”)
Query transformedQuery = queryTransformer.transform(query);

轉(zhuǎn)換后的查詢可能變?yōu)楦用鞔_的形式,例如:“深圳市南山區(qū)碧海灣小區(qū)的二手房平均價(jià)格是多少?”。這種轉(zhuǎn)換方式具有以下優(yōu)點(diǎn):

  • 消除歧義:明確指出了查詢的具體對(duì)象(碧海灣小區(qū))。
  • 保持上下文:包含了位置信息(深圳市南山區(qū))。
  • 提升精確度:使系統(tǒng)能夠更精確地檢索到相關(guān)信息。

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

第五、文檔合并器(DocumentJoiner)

在現(xiàn)實(shí)世界的應(yīng)用程序中,我們常常面臨從不同的查詢或數(shù)據(jù)源中收集文檔的需求。為了高效地管理和整合這些文檔,Spring AI 提供了 ConcatenationDocumentJoiner 這一文檔合并工具。此工具能夠智能地將來(lái)自多個(gè)來(lái)源的文檔合并成一個(gè)統(tǒng)一的文檔集合。

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

  • 智能去重:在遇到重復(fù)的文檔時(shí),系統(tǒng)僅保留首次出現(xiàn)的版本。
  • 分?jǐn)?shù)保留:在合并過(guò)程中,每個(gè)文檔的原始相關(guān)性評(píng)分得以保留。
  • 多源兼容:能夠同時(shí)處理來(lái)自不同查詢和不同數(shù)據(jù)源的文檔。
  • 順序保持:合并時(shí)維持文檔的原始檢索順序不變。

以下是一個(gè)具體的使用示例:

// 獲取來(lái)自多個(gè)查詢或數(shù)據(jù)源的文檔集合
Map<Query,List<List<Document>>> documentsMap =...;


// 實(shí)例化文檔合并器
DocumentJoiner documentJoiner = newConcatenationDocumentJoiner();


// 執(zhí)行文檔合并操作
List<Document> mergedDocuments = documentJoiner.join(documentsMap);

這種合并機(jī)制在以下幾種場(chǎng)景中尤其有用:

  • 多輪查詢:需要將多個(gè)查詢返回的文檔結(jié)果進(jìn)行合并。
  • 跨源檢索:從不同的數(shù)據(jù)源(例如數(shù)據(jù)庫(kù)、文件系統(tǒng)等)中獲取文檔。
  • 查詢擴(kuò)展:當(dāng)使用查詢擴(kuò)展技術(shù)生成多個(gè)相關(guān)查詢時(shí),需要將所有結(jié)果合并。
  • 增量更新:在現(xiàn)有的文檔集合中添加新的檢索結(jié)果。

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

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

3、Spring AI Alibaba 結(jié)構(gòu)化 RAG 最佳實(shí)踐

在部署和運(yùn)行 RAG 系統(tǒng)過(guò)程中,我們需要從多個(gè)方面來(lái)優(yōu)化系統(tǒng)性能。以下是一份全面的優(yōu)化指南:

第一、文檔處理優(yōu)化策略

1.文檔結(jié)構(gòu)優(yōu)化

  • 結(jié)構(gòu)化內(nèi)容:確保文檔包含明確的結(jié)構(gòu),例如案例編號(hào)、項(xiàng)目概述、設(shè)計(jì)要點(diǎn)等。
  • 元數(shù)據(jù)標(biāo)注:為每個(gè)文檔添加豐富的元數(shù)據(jù)。

2.文檔切割策略

  • 智能分塊算法:采用智能分塊算法來(lái)保持語(yǔ)義的連貫性。
  • 知識(shí)碎片標(biāo)簽:為每個(gè)知識(shí)碎片打上標(biāo)簽。
  • 文檔大小控制:保持文檔大小適中,避免過(guò)長(zhǎng)或過(guò)短。

第二、檢索增強(qiáng)策略

1.多查詢擴(kuò)展

  • 啟用多查詢擴(kuò)展機(jī)制:提高檢索的準(zhǔn)確性。
  • 查詢數(shù)量設(shè)置:建議設(shè)置3-5個(gè)查詢。
  • 核心語(yǔ)義保留:保留原始查詢的核心語(yǔ)義。

2.查詢重寫和翻譯

  • 優(yōu)化查詢結(jié)構(gòu):使用??RewriteQueryTransformer??。
  • 多語(yǔ)言支持:配置??TranslationQueryTransformer??。
  • 語(yǔ)義完整性:保持查詢的語(yǔ)義完整性。

第三、系統(tǒng)配置優(yōu)化策略

1.向量存儲(chǔ)配置

  • 選擇合適的向量存儲(chǔ)方案

SimpleVectorStore vectorStore = SimpleVectorStore.builder(embeddingModel)
    .build();
  • 數(shù)據(jù)規(guī)模存儲(chǔ)方式選擇:根據(jù)數(shù)據(jù)規(guī)模選擇內(nèi)存、Redis 或 MongoDB 存儲(chǔ)。

2.檢索器配置

DocumentRetriever retriever = VectorStoreDocumentRetriever.builder()
    .vectorStore(vectorStore)
    .similarityThreshold(0.5)    // 相似度閾值
    .topK(3)                     // 返回文檔數(shù)量
    .build();
  • 設(shè)置合理的相似度閾值
  • 控制返回文檔數(shù)量。
  • 配置文檔過(guò)濾規(guī)則

第四、錯(cuò)誤處理機(jī)制

1.異常處理

  • 允許空上下文查詢
  • 提供友好的錯(cuò)誤提示。
  • 引導(dǎo)用戶提供必要信息

2.邊界情況處理

ContextualQueryAugmenter.builder().allowEmptyContext(true).build()
  • 處理文檔未找到情況
  • 處理相似度過(guò)低情況。
  • 處理查詢超時(shí)情況。

第五、系統(tǒng)角色設(shè)定

1.AI 助手配置

ChatClient chatClient = builder.defaultSystem("你是一位專業(yè)的顧問(wèn),請(qǐng)注意:\n"+
"1. 準(zhǔn)確理解用戶需求\n"+
"2. 結(jié)合參考資料\n"+
"3. 提供專業(yè)解釋\n"+
"4. 考慮實(shí)用性\n"+
"5. 提供替代方案")
.build();
  • 設(shè)定清晰的角色定位
  • 定義回答規(guī)范
  • 確保專業(yè)性和實(shí)用性。

第六、性能優(yōu)化建議

1.查詢優(yōu)化

  • 使用文檔過(guò)濾表達(dá)式。
  • 設(shè)置合理的檢索閾值。
  • 優(yōu)化查詢擴(kuò)展數(shù)量

2.資源管理

  • 控制文檔加載數(shù)量。
  • 優(yōu)化內(nèi)存使用。
  • 合理設(shè)置緩存策略

通過(guò)遵循以上最佳實(shí)踐,可以構(gòu)建一個(gè)高效、可靠的 RAG 系統(tǒng),為用戶提供準(zhǔn)確和專業(yè)的回答。這些實(shí)踐涵蓋了從文檔處理到系統(tǒng)配置的各個(gè)方面,Spring AI Alibaba 能夠幫助開(kāi)發(fā)者構(gòu)建更好的 RAG 應(yīng)用。

?? 輪到你了:你認(rèn)為 RAG 企業(yè)級(jí)落地還有哪些注意點(diǎn)?


本文轉(zhuǎn)載自??玄姐聊AGI??  作者:玄姐


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-5-15 06:27:14修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦