一、RAG技術(shù)概述
1. RAG技術(shù)發(fā)展背景
隨著人工智能技術(shù)的飛速發(fā)展,自然語言處理(NLP)領(lǐng)域迎來了重大突破。特別是OpenAI推出的ChatGPT,憑借其卓越的語言識別、理解以及推理能力,讓大語言模型(LLM)走進(jìn)了人們的視野。這些模型展現(xiàn)出的智能和靈活性,使得越來越多的行業(yè)開始探索其應(yīng)用潛力。從政務(wù)領(lǐng)域的智能辦公與決策支持,到醫(yī)療行業(yè)的輔助診斷與患者咨詢;從交通領(lǐng)域的智能調(diào)度與路徑規(guī)劃,到商業(yè)導(dǎo)購中的個性化推薦與客戶服務(wù),LLM的應(yīng)用場景不斷拓展,為各行業(yè)帶來了前所未有的機(jī)遇。
然而,在LLM展現(xiàn)出巨大潛力的同時,其存在的諸多不足也逐漸暴露出來。
- 知識的滯后性:LLM的知識更新存在滯后性,模型知識的獲取是通過使用訓(xùn)練數(shù)據(jù)集訓(xùn)練獲取的,模型訓(xùn)練后產(chǎn)生的一些新知識,模型是無法學(xué)習(xí)的,而大模型訓(xùn)練成本極高,不可能經(jīng)常為了彌補(bǔ)知識而進(jìn)行模型訓(xùn)練。因此,它們的知識通常截止于某個特定時間點(diǎn),無法實時獲取最新的信息,這在需要及時準(zhǔn)確信息的場景中是一個明顯缺陷。
- 知識的局限性:大語言模型知識的廣度獲取嚴(yán)重依賴于訓(xùn)練數(shù)據(jù)集的廣度,目前市面上大多數(shù)的大模型的訓(xùn)練集來源于網(wǎng)絡(luò)公開數(shù)據(jù)集,對于一些內(nèi)部數(shù)據(jù)、特定領(lǐng)域或高度專業(yè)化的知識,無從學(xué)習(xí)。
- 幻覺問題:LLM在生成回答時可能會出現(xiàn)幻覺問題,即生成與事實不符的內(nèi)容,這嚴(yán)重影響了其輸出的可信度。所有的AI模型的底層原理都是基于數(shù)學(xué)概率,其模型輸出實質(zhì)上是一系列數(shù)值運(yùn)算,大模型也不例外,所以它有時候會一本正經(jīng)地胡說八道,尤其是在大模型自身不具備某一方面的知識或不擅長的場景。
- 數(shù)據(jù)安全性:對于客戶來說,數(shù)據(jù)安全至關(guān)重要,沒有企業(yè)客戶(政府客戶)愿意承擔(dān)數(shù)據(jù)泄露的風(fēng)險,將自身的私域數(shù)據(jù)上傳第三方平臺進(jìn)行訓(xùn)練。這也導(dǎo)致完全依賴通用大模型自身能力的應(yīng)用方案不得不在數(shù)據(jù)安全和效果方面進(jìn)行取舍。
- 缺乏上下文相關(guān)性:大語言模型(LLM)在生成內(nèi)容時基于其訓(xùn)練的數(shù)據(jù)集內(nèi)容,導(dǎo)致其有些時候缺乏足夠的上下文相關(guān)性,無法充分理解用戶的意圖和背景信息,導(dǎo)致回答不夠精準(zhǔn)。
而這些問題限制了LLM在一些對準(zhǔn)確性和可靠性要求較高的領(lǐng)域的廣泛應(yīng)用。
在這樣的背景下,RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)技術(shù)應(yīng)運(yùn)而生。RAG的出現(xiàn)旨在彌補(bǔ)LLM的不足,通過結(jié)合信息檢索和文本生成,為模型提供更廣泛的知識來源和更豐富的上下文信息。在RAG的框架下,當(dāng)用戶提出問題時,系統(tǒng)先從外部知識庫中檢索與問題最相關(guān)的文檔或信息片段,然后將這些信息作為上下文注入到LLM中,輔助其生成更準(zhǔn)確、更相關(guān)、更可信的回答。這種技術(shù)融合不僅有效解決了LLM的知識局限性和幻覺問題,還提升了其在復(fù)雜任務(wù)中的表現(xiàn)能力,使其能夠更好地滿足各行業(yè)對高質(zhì)量語言處理的需求。
RAG技術(shù)的出現(xiàn)和發(fā)展,是自然語言處理領(lǐng)域技術(shù)演進(jìn)的必然結(jié)果,也是對大語言模型(LLM)應(yīng)用需求的積極回應(yīng)。它為大語言模型(LLM)的進(jìn)一步優(yōu)化和拓展提供了新的思路和方法,推動了人工智能技術(shù)在更多領(lǐng)域的深入應(yīng)用和創(chuàng)新發(fā)展。
2. RAG技術(shù)介紹
RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)是指對大型語言模型輸出進(jìn)行優(yōu)化,使其能夠在生成響應(yīng)之前引用訓(xùn)練數(shù)據(jù)來源之外的權(quán)威知識庫。大語言模型(LLM)用海量數(shù)據(jù)進(jìn)行訓(xùn)練,使用數(shù)十億個參數(shù)為回答問題、翻譯語言和完成句子等任務(wù)生成原始輸出。在大語言模型(LLM)本就強(qiáng)大的功能基礎(chǔ)上,RAG 將其擴(kuò)展為能訪問特定領(lǐng)域或組織的內(nèi)部知識庫,所有這些都無需重新訓(xùn)練模型。這是一種經(jīng)濟(jì)高效地改進(jìn) 大語言模型(LLM)輸出的方法,讓它在各種情境下都能保持相關(guān)性、準(zhǔn)確性和實用性。實際上,RAG的本質(zhì)是In Context Learning(語言上下文學(xué)習(xí)),即RAG(檢索增強(qiáng)生成) = 檢索技術(shù) + LLM 提示。
RAG通過集成外部知識源增強(qiáng)大型語言模型(LLM)的能力,突破靜態(tài)訓(xùn)練數(shù)據(jù)的知識局限。典型場景為用戶向LLM(如ChatGPT)詢問近期熱點(diǎn)新聞,RAG通過檢索外部數(shù)據(jù)庫的動態(tài)知識,生成準(zhǔn)確且內(nèi)容豐富的響應(yīng)。

RAG應(yīng)用遵循三階段流程:檢索(Retrieval)、融合增強(qiáng)(Augmentation)、生成(Generation),其基礎(chǔ)工作流程包括:
- 索引(Indexing):將外部知識源的文檔分割為小塊(chunks),編碼為向量表示(embedding),存儲于向量數(shù)據(jù)庫,便于高效搜索。
- 檢索(Retrieval):根據(jù)用戶查詢,計算其與索引文檔的語義相似度,提取Top-k相關(guān)文檔塊,作為生成上下文。
- 生成(Generation):將查詢與檢索塊輸入LLM,生成基于外部知識的響應(yīng),確保事實準(zhǔn)確性。
1.3 RAG技術(shù)的重要性
RAG的重要性在于它能夠有效解決LLM在知識更新、幻覺問題、上下文相關(guān)性等方面的不足,同時提高系統(tǒng)的效率、透明度和可追溯性。它不僅推動了人工智能技術(shù)的發(fā)展,還為各行業(yè)提供了更強(qiáng)大、更可靠的工具來應(yīng)對復(fù)雜的需求和挑戰(zhàn)。
RAG用于解決LLM的知識局限性,RAG通過檢索外部知識源,能夠為模型提供最新的數(shù)據(jù)和信息,從而解決知識更新的滯后性問題。同時,RAG通過檢索相關(guān)文檔作為上下文,幫助模型生成更準(zhǔn)確、更可信的回答,減少幻覺現(xiàn)象。
RAG技術(shù)能夠提高效率和成本效益,RAG通過檢索外部知識源,無需頻繁重新訓(xùn)練模型,大大降低了成本。RAG通過融合大語言模型(LLM)的參數(shù)化知識與外部非參數(shù)化數(shù)據(jù),顯著提升性能,為知識密集型任務(wù)提供高效解決方案。其通過檢索可驗證信息,優(yōu)化響應(yīng)質(zhì)量,支持持續(xù)知識更新與領(lǐng)域特定信息集成。
RAG能夠有效緩解生成錯誤問題,通過引用外部知識源降低事實性錯誤概率,特別適用于高準(zhǔn)確性場景。其輸出可追蹤且透明,解決傳統(tǒng)大語言模型(LLM)推理不透明的局限性。RAG支持生成可驗證的文本響應(yīng),通過集成特定領(lǐng)域知識庫,將LLM轉(zhuǎn)變?yōu)閷I(yè)領(lǐng)域?qū)<?,適用于法律、醫(yī)療等應(yīng)用。
RAG能夠增強(qiáng)上下文相關(guān)性,RAG能夠根據(jù)具體問題檢索到最相關(guān)的知識片段,并將其作為上下文注入到LLM中。這樣生成的回答更具針對性和相關(guān)性,能夠更好地滿足用戶的需求。RAG可以根據(jù)不同領(lǐng)域(金融、醫(yī)療等)的需求,從專門的知識庫中檢索信息,生成符合行業(yè)標(biāo)準(zhǔn)的回答。
二、RAG的發(fā)展歷程與技術(shù)范式
RAG的概念最早由Patrick Lewis及其團(tuán)隊在2020年的論文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出。當(dāng)時,研究團(tuán)隊正在尋找一種方法,將更多知識融入到大型語言模型(LLM)中,以解決LLM在知識密集型任務(wù)中的局限性。這項技術(shù)最初是為了應(yīng)對知識密集型自然語言處理任務(wù)而設(shè)計的,此后迅速發(fā)展,在其研究歷程中形成了不同的階段。
最初,研究旨在通過在預(yù)訓(xùn)練階段向語言模型注入更多知識來增強(qiáng)其能力。ChatGPT的推出引發(fā)了對利用大型模型進(jìn)行深度上下文理解的極大興趣,這也加速了RAG在推理階段的發(fā)展。隨著研究人員深入探索大型語言模型(LLMs)的能力,關(guān)注點(diǎn)逐漸轉(zhuǎn)向提升其可控性和推理技能,以跟上不斷增長的技術(shù)與應(yīng)用需求。GPT-4的出現(xiàn)標(biāo)志著一個重要的里程碑,它以一種新的方式將RAG與微調(diào)技術(shù)相結(jié)合,同時繼續(xù)優(yōu)化預(yù)訓(xùn)練策略。

在RAG的技術(shù)發(fā)展歷程中,我們從技術(shù)范式的角度將其演變過程總結(jié)為以下階段。
2.1 Naive RAG(基礎(chǔ)RAG)
經(jīng)典的RAG流程,也稱為Naive RAG(基礎(chǔ)RAG),它主要包括以下三個基本步驟:
- 索引(Indexing):將文檔語料庫拆分成較短的片段,并通過編碼器構(gòu)建向量索引。
- 檢索(Retrieval):根據(jù)問題與片段之間的相似性檢索相關(guān)的文檔片段。
- 生成(Generation):基于檢索到的上下文生成問題的答案。
2.2 Advanced RAG(高級RAG)
Naive RAG在檢索、生成和增強(qiáng)方面面臨諸多挑戰(zhàn)。隨后提出了Advanced RAG(高級RAG)范式,它在檢索之前和檢索之后增加了額外的處理步驟。在檢索之前,可以采用查詢重寫、路由和擴(kuò)展等方法來彌合問題與文檔片段之間的語義差異。在檢索之后,可以對檢索到的文檔語料庫進(jìn)行重排,以避免“迷失在中間”的現(xiàn)象,或者對上下文進(jìn)行過濾和壓縮,以縮短上下文窗口長度。
2.3 Modular RAG(模塊化RAG)
隨著RAG技術(shù)的進(jìn)一步發(fā)展和演變,新的突破超越了傳統(tǒng)的Naive RAG檢索-生成框架,從而產(chǎn)生了Modular RAG(模塊化RAG)的概念。在結(jié)構(gòu)上,它更加自由靈活,引入了更具體的模塊,例如查詢搜索引擎和多答案融合。在技術(shù)上,它將檢索與微調(diào)、強(qiáng)化學(xué)習(xí)等技術(shù)相結(jié)合。在流程上,RAG模塊被設(shè)計和編排,從而形成了各種RAG模式。
然而,模塊化RAG并非憑空出現(xiàn);這三種范式之間存在著繼承與發(fā)展關(guān)系。高級RAG是模塊化RAG的一個特例,而基礎(chǔ)RAG是高級RAG的一個特例。

以下是RAG三種技術(shù)范式的對比說明:
- Naive RAG(基礎(chǔ)RAG) 主要由三部分組成:索引、檢索和生成。
- Advanced RAG(高級RAG) 圍繞檢索前和檢索后提出了多種優(yōu)化策略,其過程與樸素RAG相似,仍然遵循鏈狀結(jié)構(gòu)。
- Modular RAG(模塊化RAG) 繼承和發(fā)展了以前的范式,整體上展示了更大的靈活性。這在引入多個特定功能模塊和替換現(xiàn)有模塊方面表現(xiàn)得很明顯。整個過程并不局限于順序檢索和生成;它包括迭代和自適應(yīng)檢索等方法。
三、RAG工作原理
3.1 RAG技術(shù)工作原理
RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)的工作原理是通過結(jié)合信息檢索(Retrieval)和語言生成(Generation)兩個步驟,來提升語言模型生成回答的準(zhǔn)確性和相關(guān)性。

以下是RAG工作流程原理的詳細(xì)解釋:
Step 1. 問題輸入
用戶向系統(tǒng)提出一個問題,例如:“2024年全球最暢銷的電動汽車品牌是什么?”
Step 2. 信息檢索(Retrieval)
- 檢索模塊的作用:檢索模塊是RAG的第一步,它的任務(wù)是從外部知識源(如文檔、數(shù)據(jù)庫或網(wǎng)絡(luò))中找到與用戶問題最相關(guān)的文檔或信息片段。
-
檢索過程:
- 文本編碼:將用戶的問題轉(zhuǎn)換為向量表示,便于與知識庫中的內(nèi)容進(jìn)行比較。
- 相似性搜索:在知識庫中搜索與問題向量最相似的文檔或片段。這通常使用向量相似性搜索技術(shù)(如FAISS、Pinecone等)來實現(xiàn)。
- 選擇相關(guān)文檔:檢索模塊會返回與問題最相關(guān)的幾個文檔或片段,這些文檔將作為后續(xù)生成的上下文。
Step 3. 上下文融合(Fusion)
- 融合模塊的作用:檢索到的相關(guān)文檔需要與原始問題進(jìn)行融合,形成增強(qiáng)后的上下文。
-
融合過程:
- 文檔處理:對檢索到的文檔進(jìn)行預(yù)處理,提取關(guān)鍵信息,確保其適合用于生成回答。
- 上下文構(gòu)建:將處理后的文檔與原始問題組合,形成一個完整的上下文。這個上下文包含了問題和相關(guān)的背景信息。
Step 4. 語言生成(Generation)
- 生成模塊的作用:生成模塊是RAG的第二步,它的任務(wù)是根據(jù)增強(qiáng)后的上下文生成回答。
-
生成過程:
- 上下文輸入:將融合后的上下文輸入到語言模型(如GPT、LLaMA等)中。
- 生成回答:語言模型根據(jù)上下文生成回答。由于上下文包含了與問題相關(guān)的最新信息,生成的回答通常更準(zhǔn)確、更相關(guān)。
Step 5. 輸出回答
生成的回答會返回給用戶。例如,對于上述問題,系統(tǒng)可能會生成:“2024年全球最暢銷的電動汽車品牌是特斯拉(Tesla),其市場份額顯著領(lǐng)先于其他品牌?!?/p>
Step 6. 反饋與優(yōu)化(可選)
- 用戶反饋:用戶可以對生成的回答進(jìn)行評價,反饋是否滿意。
- 系統(tǒng)優(yōu)化:根據(jù)用戶反饋,系統(tǒng)可以進(jìn)一步優(yōu)化檢索策略和生成算法,提升性能。
3.2 RAG核心組件
RAG框架由檢索(Retrieval)、生成(Generation)、融合增強(qiáng)(Augmentation)三大組件構(gòu)成,協(xié)同增強(qiáng)LLM能力。
- 檢索組件:負(fù)責(zé)從外部知識源中找到與問題最相關(guān)的文檔或片段,涉及知識庫、API或向量數(shù)據(jù)庫。
- 融合增強(qiáng)組件:將檢索到的文檔與原始問題結(jié)合,形成增強(qiáng)后的上下文。
- 生成組件:根據(jù)增強(qiáng)后的上下文生成回答。
通過這種“檢索 + 生成”的方式,RAG能夠有效解決LLM的知識局限性和幻覺問題,同時提升生成回答的準(zhǔn)確性和相關(guān)性。
四、RAG生態(tài)應(yīng)用系統(tǒng)
RAG(檢索增強(qiáng)生成)技術(shù)的應(yīng)用范圍已經(jīng)突破了傳統(tǒng)的問答系統(tǒng)領(lǐng)域,其影響力正在迅速擴(kuò)展到更多行業(yè)和任務(wù)類型中。如今,從個性化推薦系統(tǒng)到復(fù)雜的信息抽取任務(wù),再到自動化報告生成,RAG技術(shù)正以其獨(dú)特的優(yōu)勢為這些領(lǐng)域帶來變革,顯著提升系統(tǒng)的性能和用戶體驗。
與此同時,RAG技術(shù)棧也迎來了快速發(fā)展的黃金時期。除了Langchain和LlamaIndex等廣受歡迎的開源工具外,市場對RAG技術(shù)的需求不斷增長,推動了一系列更具針對性的RAG工具的涌現(xiàn)。這些工具的出現(xiàn),不僅豐富了RAG的應(yīng)用場景,也標(biāo)志著RAG生態(tài)系統(tǒng)正在逐步形成和完善。

RAG生態(tài)系統(tǒng)的形成和發(fā)展,不僅為技術(shù)開發(fā)者提供了豐富的工具選擇,也為各行業(yè)的用戶帶來了更加靈活和高效的解決方案。通過整合不同類型的RAG工具,用戶可以根據(jù)自身需求構(gòu)建定制化的RAG系統(tǒng),從而在保持技術(shù)先進(jìn)性的同時,實現(xiàn)成本效益的最大化。此外,RAG生態(tài)系統(tǒng)的不斷完善還將促進(jìn)技術(shù)的創(chuàng)新和迭代,推動RAG技術(shù)在更多領(lǐng)域?qū)崿F(xiàn)突破,為人工智能的發(fā)展注入新的動力。
五、RAG相關(guān)問題
5.1 為什么RAG系統(tǒng)中需要向量數(shù)據(jù)庫?
向量數(shù)據(jù)庫是 RAG 系統(tǒng)的核心,可以以數(shù)據(jù)塊形式有效地存儲特定于業(yè)務(wù)的信息,每個數(shù)據(jù)塊由嵌入模型產(chǎn)生的相應(yīng)多維向量表示。存儲在向量數(shù)據(jù)庫中的數(shù)據(jù)塊可以是文本、圖形、圖表、表格、視頻或其他數(shù)據(jù)模式。這些數(shù)據(jù)庫可以處理向量空間操作的復(fù)雜性和特異性,如余弦相似性,因此具備幾個關(guān)鍵優(yōu)勢:
- 高效相似性搜索:能夠快速搜索最接近查詢向量的 top-K 向量,對語義搜索和推薦系統(tǒng)而言至關(guān)重要。
- 處理高維數(shù)據(jù):隨著數(shù)據(jù)中相關(guān)特征數(shù)量的增加,使用傳統(tǒng) SQL 數(shù)據(jù)庫難以提供最快的性能。
- 可擴(kuò)展性:向量數(shù)據(jù)庫可以在多個 GPU加速服務(wù)器上運(yùn)行,以提供理想的數(shù)據(jù)攝取或相似性搜索性能。
- 實時處理:RAG 應(yīng)用,如 AI聊天機(jī)器人,依靠向量數(shù)據(jù)庫提供最新的業(yè)務(wù)信息發(fā)送給 LLM,因此 LLM 能夠更好地滿足用戶的查詢。
- 增強(qiáng)的搜索相關(guān)性:通過理解語義關(guān)系,改善內(nèi)容發(fā)現(xiàn)和用戶體驗,提供更相關(guān)的結(jié)果。
這些功能令向量數(shù)據(jù)庫成為 RAG 不可或缺的一部分,支持涉及復(fù)雜數(shù)據(jù)的高效運(yùn)維。
5.2 RAG和傳統(tǒng)語義搜索有什么區(qū)別?
語義搜索可以提高 RAG 結(jié)果,適用于想要在其大語言模型(LLM)應(yīng)用程序中添加大量外部知識源的組織?,F(xiàn)代企業(yè)在各種系統(tǒng)中存儲大量信息,例如手冊、常見問題、研究報告、客戶服務(wù)指南和人力資源文檔存儲庫等。上下文檢索在規(guī)模上具有挑戰(zhàn)性,因此會降低生成輸出質(zhì)量。
而語義搜索技術(shù)可以掃描包含不同信息的大型數(shù)據(jù)庫,并更準(zhǔn)確地檢索數(shù)據(jù)。例如,他們可以回答諸如 “去年在機(jī)械維修上花了多少錢?”之類的問題,方法是將問題映射到相關(guān)文檔并返回特定文本而不是搜索結(jié)果。然后,開發(fā)人員可以使用該答案為大語言模型(LLM)提供更多上下文。
RAG 中的傳統(tǒng)或關(guān)鍵字搜索解決方案對知識密集型任務(wù)產(chǎn)生的結(jié)果有限。為此,開發(fā)人員在手動準(zhǔn)備數(shù)據(jù)時還必須處理單詞嵌入、文檔分塊和其他復(fù)雜問題。相比之下,語義搜索技術(shù)可以完成知識庫準(zhǔn)備的所有工作,可以減少開發(fā)人員處理知識密集型任務(wù)的工作量。它們還生成語義相關(guān)的段落和按相關(guān)性排序的標(biāo)記詞,以最大限度地提高 RAG 有效載荷的質(zhì)量。