九種高級 RAG 技術(shù)及其實現(xiàn)方法
本文將探討 9 種關(guān)鍵的高級檢索增強生成 (RAG) 技術(shù),并介紹如何借助相關(guān)工具實現(xiàn)它們。
在實際的 AI 應(yīng)用中,RAG 技術(shù)能有效優(yōu)化 RAG 管道的準確性和靈活性。從更智能的文本分塊(chunking)到混合搜索(hybrid search)和上下文蒸餾(context distillation),這些方法對于提供更快、更準確的響應(yīng)至關(guān)重要。
我們?yōu)槭裁葱枰@些技術(shù)?因為基本的 RAG 系統(tǒng)常常面臨結(jié)果嘈雜、上下文不相關(guān)或排序不佳等問題。當檢索系統(tǒng)無法找到相關(guān)信息時,用戶會對其失去信任,大型語言模型(LLM)也會浪費時間處理錯誤的上下文。
本文將詳細介紹 9 種重要的先進 RAG 技術(shù):
- 文本分塊
- 重新排序
- 利用元數(shù)據(jù)
- 混合搜索
- 查詢重寫
- 自動裁剪 *上下文蒸餾
- 微調(diào)大型語言模型(LLM)
- 微調(diào)嵌入模型
你還將學(xué)習如何使用 Meilisearch、LangChain 和向量數(shù)據(jù)庫等工具來實現(xiàn)這些策略,以及如何評估哪些策略能真正帶來提升。
下面我們開始深入探討。

1. 文本分塊
文本分塊是將長文檔切分成更小的片段(即“塊”),以便于索引和檢索。
RAG 管道處理的是這些文本塊,而非整個文檔,因此文本塊的質(zhì)量直接影響檢索準確性和答案清晰度。
如果文本塊過長,AI 模型可能會被干擾;如果過短,則可能丟失上下文。找到合適的平衡點有助于獲得最佳結(jié)果。
以下是幾種分塊類型:
- 簡單分塊: 將文檔分割成固定大小且略有重疊的塊(例如,35 個字符,重疊 5 個字符)。這種方法易于實現(xiàn),但不考慮語義結(jié)構(gòu),可能將關(guān)鍵思想分割到不同塊中。
- 語義分塊: 利用嵌入和余弦閾值,根據(jù)相似性對句子進行分組。這種方法能保持相關(guān)思想的完整性,提高檢索精度,但需要像 BERT 這樣的嵌入模型以及更高的計算性能。
- 基于語言模型的分塊: 使用大型語言模型(LLM)將文本分割成獨立的語義單元。這種方法能產(chǎn)生高度連貫的結(jié)果,但計算成本高昂,可能需要進行微調(diào)。
不出所料,每種方法都有其權(quán)衡。如果處理的是產(chǎn)品手冊或技術(shù)文檔,語義分塊或基于LLM 的分塊可能更具優(yōu)勢。對于更簡單的內(nèi)容,固定大小的分塊就足夠了。
2. 重新排序
在 RAG 系統(tǒng)中,初始檢索器會獲取大量的檢索信息,其中有好的,也有不理想的。重新排序(Reranking)是指在將結(jié)果傳遞給大型語言模型(LLM)之前,對檢索到的結(jié)果進行重新排列,使最相關(guān)的信息排在前面。
以下是幾種常見的重新排序方法:
- 交叉編碼器重新排序: 將用戶查詢和每個候選文本塊輸入到一個 Transformer 模型(如 BERT)中,該模型會評估它們之間的匹配程度。這種方法非常準確,但速度慢且資源密集。當質(zhì)量比延遲更重要時,此方法最適用。
- 基于分數(shù)重新排序: 使用啟發(fā)式方法或相關(guān)性分數(shù)(如 BM25 提升、關(guān)鍵詞搜索匹配)調(diào)整排序。這種方法速度快、開銷小,但精細度較低。
這兩種技術(shù)都有效,但選擇哪種取決于你能承受的延遲。
3. 利用元數(shù)據(jù)
利用元數(shù)據(jù)(Leveraging metadata)是指使用結(jié)構(gòu)化標簽,如日期、作者、領(lǐng)域或文檔類型,來過濾和提升相關(guān)結(jié)果。
元數(shù)據(jù)過濾是一種投入低、效果顯著的技術(shù),因為它不需要大量的計算。
以下是其主要子類型:
*日期過濾:移除過時數(shù)據(jù),只關(guān)注最新文檔。這在金融等快速變化的領(lǐng)域非常有用。然而,過度關(guān)注最新內(nèi)容有時可能會排除重要的歷史文檔。
- 作者/來源過濾:提升來自可信個人或來源的檢索文檔。這種方法產(chǎn)生幻覺(hallucination)的可能性很低,但你也可能因此錯過一些不那么知名但高度相關(guān)的數(shù)據(jù)。
- 文檔類型過濾: 根據(jù)格式(例如,指南、博客或政策文件)進行過濾。雖然這有助于匹配用戶意圖,但如果元數(shù)據(jù)不一致,也存在過度過濾的風險。
4. 混合搜索
混合搜索(Hybrid search)結(jié)合了基于關(guān)鍵詞(稀疏)和基于向量(密集)的檢索方法,以提高結(jié)果質(zhì)量。
這能顯著提高相關(guān)性,尤其是在邊緣情況或用戶查詢模糊時。
混合搜索主要有兩種方法:
*分數(shù)融合:使用加權(quán)分數(shù)結(jié)合稀疏和密集方法的搜索結(jié)果。這種方法能實現(xiàn)平衡的準確性,但需要仔細調(diào)整以避免結(jié)果嘈雜。
- 結(jié)果合并: 從兩種方法中檢索出最佳結(jié)果,然后合并并重新排序。這種方法實現(xiàn)簡單,但存在重復(fù)或排序邏輯不一致的風險。
5. 查詢重寫
查詢重寫(Query rewriting)是在檢索過程之前對用戶輸入進行優(yōu)化。它會重新組織模糊或不明確的查詢,使檢索系統(tǒng)能更好地理解用戶意圖并返回更相關(guān)的結(jié)果。這對于處理簡短或包含拼寫錯誤的查詢尤其有幫助。
大多數(shù)現(xiàn)代生成式 AI系統(tǒng)都在其背后使用各種算法來優(yōu)化查詢。以下是幾種類型:
- 同義詞擴展:這種技術(shù)會自動添加等效詞來覆蓋更多變體。雖然這可以提高召回率,但也可能引入一些不相關(guān)的匹配。
- 拼寫校正:自動修復(fù)任何錯別字或拼寫錯誤。這提升了普通用戶的成功率,但也可能“糾正”一些小眾或有效行話。 *意圖澄清:這一過程使用規(guī)則或機器學(xué)習將寬泛的查詢轉(zhuǎn)換為更清晰的查詢。它能提高相關(guān)性,但需要訓(xùn)練數(shù)據(jù)并增加了復(fù)雜性。
6. 自動裁剪 (Autocut)
自動裁剪(Autocut)是根據(jù) token 限制或模型約束動態(tài)地修剪文本,而不切斷語義含義。這是一種在不移除關(guān)鍵信息的前提下,刪除不那么相關(guān)上下文的方法。這很重要,因為許多大型語言模型(LLM)都有嚴格的 token 限制。如果上下文窗口過載,AI 模型可能會產(chǎn)生幻覺、跳過關(guān)鍵信息或表現(xiàn)不佳。
以下是兩種常見的自動裁剪策略:
- 分數(shù)修剪:根據(jù)重要性對內(nèi)容進行排名,并裁剪得分最低的部分。雖然優(yōu)先級設(shè)定很智能,但這需要有一個有效的評分機制。
- 基于規(guī)則的修剪:應(yīng)用固定規(guī)則(例如,刪除引言段落或腳注)。這種方法易于實現(xiàn),但缺乏對細微內(nèi)容的適應(yīng)性。
7. 上下文蒸餾
對于復(fù)雜的 RAG 系統(tǒng)而言,每次都解析大量文檔并非最佳選擇。上下文蒸餾(Context distillation)有助于將大型文檔濃縮成高價值、有意義的摘要。
如你所知,大型語言模型(LLM)只需要“正確”的信息,而非“所有”信息。更多的上下文不一定意味著更好的結(jié)果,甚至可能稀釋最終輸出。上下文蒸餾有助于模型在生成響應(yīng)時保持專注和準確。
有兩種方法可以實現(xiàn)這一點:
- 基于摘要的蒸餾:使用提取式或抽象式摘要來保留關(guān)鍵點。這種方法產(chǎn)生簡潔的上下文,但可能會遺漏細節(jié)。
- 問題驅(qū)動的蒸餾:根據(jù)具體問題定制上下文。這種方法高度相關(guān),但依賴于準確的查詢理解。
8. 微調(diào)大型語言模型(LLM)
微調(diào)大型語言模型(LLM)是指在你的特定數(shù)據(jù)集上重新訓(xùn)練預(yù)訓(xùn)練的語言模型,以便更好地理解你期望生成的響應(yīng)類型。
當僅憑提示工程無法很好地指導(dǎo)模型時,微調(diào)尤其有用,特別是在受監(jiān)管行業(yè)或特定領(lǐng)域背景下。
- 監(jiān)督式微調(diào):使用標記的問答、代碼或指令進行再訓(xùn)練。此方法提供精度和控制,但需要精選數(shù)據(jù)和資源。
- 基于人類反饋的強化學(xué)習:人類對輸出進行評分,模型學(xué)習偏好被認可的響應(yīng)。此方法與價值觀或品牌語調(diào)保持一致,但資源密集。
9. 微調(diào)嵌入模型
嵌入模型將文檔轉(zhuǎn)換為向量,以實現(xiàn)文檔檢索。微調(diào)嵌入模型意味著重塑檢索模型對相似性的“理解”方式,這在現(xiàn)成的嵌入模型在你的領(lǐng)域表現(xiàn)不佳時至關(guān)重要。
- 對比學(xué)習:訓(xùn)練嵌入模型,使語義相似的文本更接近,而不相似的文本更遠離。這提高了檢索準確性,但需要標記的正向和負向樣本。
- 領(lǐng)域適應(yīng):繼續(xù)在你的語料庫上進行訓(xùn)練,使嵌入模型與你的領(lǐng)域保持一致。這種方法更容易設(shè)置,特別是對于未標記的數(shù)據(jù),但存在過擬合的風險。
微調(diào)大型語言模型(LLM)和嵌入模型可以讓你完全控制檢索和響應(yīng)生成,為高性能、領(lǐng)域感知的 RAG 模型奠定基礎(chǔ)。## 什么是高級 RAG 技術(shù)?
高級 RAG 技術(shù)超越了檢索增強生成的基本原理。它們在文本分塊、檢索和內(nèi)容排序方面更注重細節(jié)和細微之處。然而,最終目標是一致的:生成更好、更相關(guān)的搜索結(jié)果。
無論是優(yōu)化混合搜索、重寫查詢,還是調(diào)整元數(shù)據(jù),這些方法都基于檢索增強生成的核心原則,旨在提高準確性和效率。
為什么需要高級 RAG 技術(shù)?
基本 RAG 設(shè)置的問題在于,它們常常難以處理復(fù)雜的查詢。此外,在處理多樣化數(shù)據(jù)集或在關(guān)鍵場景下保持相關(guān)性時,它們也常常力不從心。
隨著用戶期望的增長以及大型語言模型(LLM)在生產(chǎn)級工作流程中變得越來越核心,僅僅依靠暴力檢索已經(jīng)不夠了。我們需要智能的 AI 應(yīng)用來理解細微差別,并優(yōu)先考慮來自可信來源的最新數(shù)據(jù)。
高級技術(shù)有助于你從“檢索并希望”轉(zhuǎn)向“有目的地檢索”。它們解決了幻覺、延遲和內(nèi)容不匹配等關(guān)鍵痛點,同時提高了準確性和性能。
如何在 RAG 中實現(xiàn)高級技術(shù)?
你可以使用不同的工具、庫和框架來實現(xiàn)高級檢索技術(shù)。
以下是一些可用于實現(xiàn)高級檢索增強生成技術(shù)的 RAG 工具:
- Meilisearch
- Weaviate
- LangChain
- Pinecone
讓我們進一步了解它們:
1. Meilisearch
Meilisearch 是一個開源工具,在設(shè)計時充分考慮了用戶體驗,非常適合實現(xiàn)高級 RAG 管道。它支持可定制的 ranking 規(guī)則,并能輕松處理大量文檔集合。
你可以使用 Meilisearch 的混合搜索插件實現(xiàn)混合搜索(結(jié)合關(guān)鍵詞和向量搜索的相關(guān)性)。這可以平衡語義搜索理解與傳統(tǒng)精度。
// 示例代碼片段,用于演示 Meilisearch 的使用場景
// 索引大型文檔為結(jié)構(gòu)化塊
// client.index('my_index').addDocuments([
// { id: 1, title: 'Chunk 1 of document A', content: '...' },
// { id: 2, title: 'Chunk 2 of document A', content: '...' },
// ]);當處理大型文檔時,你可以通過將其作為結(jié)構(gòu)化塊進行索引來提高搜索質(zhì)量:
// 示例代碼片段,用于演示 Meilisearch 的使用場景
// 查詢帶有元數(shù)據(jù)的文檔
// client.index('my_index').search('my query', {
// filter:'document_type = "policy"',
// // boost results from trusted authors
// rankingRules: ['author_score:desc', 'typo', 'words', 'proximity', 'attribute', 'sort', 'exactness'],
// });Meilisearch 的性能和易于集成使其成為構(gòu)建智能 RAG 管道的首選解決方案,而無需過度復(fù)雜化。
2. Weaviate
Weaviate 是一個原生向量搜索引擎,專為高性能語義搜索而構(gòu)建。它直接與 Transformer 和嵌入模型集成,非常適合 RAG 實現(xiàn)。
3. LangChain
LangChain 是一個 Python/JavaScript 框架,它將大型語言模型(LLM)、檢索組件和工具串聯(lián)起來。它使 RAG 工作流模塊化且可配置。
你可以在一個統(tǒng)一的流程中插入重新排序模型、編寫自己的查詢重寫器并管理分塊管道。
4. Pinecone
Pinecone 是一個托管的向量數(shù)據(jù)庫,專為大規(guī)模相似性搜索而構(gòu)建。它適用于需要閃電般快速、可擴展的向量檢索、重新排序和時間過濾查詢的項目。
結(jié)合 Meilisearch 或 LangChain,Pinecone 為你的 RAG 設(shè)置增加了可擴展性和生產(chǎn)就緒能力。
如何評估 RAG 系統(tǒng)中的高級技術(shù)?
要評估高級 RAG 技術(shù),你需要測試每項技術(shù)對檢索質(zhì)量的影響。目標是實現(xiàn)高精度、豐富的上下文、低延遲和可靠的實際可用性。
為了評估有效性,請關(guān)注以下指標:
- 檢索準確性: 是否返回了最具上下文相關(guān)性的文本塊?這會影響下游的一切,包括幻覺率和答案質(zhì)量。
- 延遲: 重新排序或混合搜索等技術(shù)是否會拖慢你的系統(tǒng)?評估端到端響應(yīng)時間。* 精確度與召回率: 你返回的相關(guān)文檔是太少(或太多)了嗎?你需要找到平衡覆蓋率和專注度的最佳點。
- 用戶滿意度: 終端用戶多久能準確獲得他們需要的東西?考慮進行 A/B 測試或人工評估。
當你在不犧牲質(zhì)量的前提下優(yōu)化速度時,Meilisearch 快速準確的混合引擎脫穎而出。
為什么更智能的 RAG 在實踐中很重要?
高級 RAG 技術(shù)最終目的是讓信息檢索更智能,而不僅僅是更快。它們幫助系統(tǒng)超越暴力搜索,轉(zhuǎn)向上下文感知檢索,從而在不同領(lǐng)域?qū)崿F(xiàn)擴展。
通過分層應(yīng)用混合搜索、重新排序和上下文蒸餾等策略,團隊可以設(shè)計出在生產(chǎn)環(huán)境中提供更精確、更可靠和更高效結(jié)果的 RAG 管道。



























