一、檢索增強生成(RAG)

什么是RAG?

RAG(Retrieval-Augmented Generation,檢索增強生成),RAG是一種 AI 框架,它將傳統信息檢索系統(例如數據庫)的優勢與生成式大語言模型 (LLM) 的功能結合在一起。
LLM通過將這些額外的知識與自己的語言技能相結合,可以撰寫更準確、更具時效性且更貼合具體需求的文字。



如何理解RAG?

通過上一個問題,我們知道了什么是RAG?了解到RAG是一種結合了信息檢索、文本增強和文本生成的自然語言處理(NLP)的技術。
RAG的目的是通過從外部知識庫檢索相關信息來輔助大語言模型生成更準確、更豐富的文本內容。那我們如何理解RAG的檢索、增強和生成呢?

檢索:檢索是RAG流程的第一步,從預先建立的知識庫中檢索與問題相關的信息。這一步的目的是為后續的生成過程提供有用的上下文信息和知識支撐。

增強:RAG中增強是將檢索到的信息用作生成模型(即大語言模型)的上下文輸入,以增強模型對特定問題的理解和回答能力。這一步的目的是將外部知識融入生成過程中,使生成的文本內容更加豐富、準確和符合用戶需求。通過增強步驟,LLM模型能夠充分利用外部知識庫中的信息。

生成:生成是RAG流程的最后一步。這一步的目的是結合LLM生成符合用戶需求的回答。生成器會利用檢索到的信息作為上下文輸入,并結合大語言模型來生成文本內容。

RAG的“檢索、增強、生成”,誰增強了誰,誰生成了答案,主語很重要。是從知識庫中檢索到的問答對,增強了LLM的提示詞(prompt),LLM拿著增強后的Prompt生成了問題答案。


如何使用RAG?

了解了什么是RGA,同步也理解了RAG的檢索、增強和生成。那我們如何使用RAG呢?接下來以RAG搭建知識問答系統具體步驟為例,來講解如何使用RAG?
1. 數據準備與知識庫構建:

收集數據:首先,需要收集與問答系統相關的各種數據,這些數據可以來自文檔、網頁、數據庫等多種來源。

數據清洗:對收集到的數據進行清洗,去除噪聲、重復項和無關信息,確保數據的質量和準確性。

知識庫構建:將清洗后的數據構建成知識庫。這通常包括將文本分割成較小的片段(chunks),使用文本嵌入模型(如GLM)將這些片段轉換成向量,并將這些向量存儲在向量數據庫(如FAISS、Milvus等)中。

2. 檢索模塊設計:

問題向量化:當用戶輸入查詢問題時,使用相同的文本嵌入模型將問題轉換成向量。

相似度檢索:在向量數據庫中檢索與問題向量最相似的知識庫片段(chunks)。這通常通過計算向量之間的相似度(如余弦相似度)來實現。

結果排序:根據相似度得分對檢索到的結果進行排序,選擇最相關的片段作為后續生成的輸入。

3. 生成模塊設計:

上下文融合:將檢索到的相關片段與原始問題合并,形成更豐富的上下文信息。

大語言模型生成:使用大語言模型(如GLM)基于上述上下文信息生成回答。大語言模型會學習如何根據檢索到的信息來生成準確、有用的回答。

大家可以結合自己的業務領域知識,開始搭建醫療、法律、產品知識問答。先搭建Demo,然后工作中不斷完善知識庫問答對。


二、RAG的原理、流程及架構

RAG工作原理是什么?大型語言模型(LLM)面臨兩個問題,第一個問題是LLM會產生幻覺,第二個是LLM的知識中斷。
1. 知識截止:當 LLM 返回的信息與模型的訓練數據相比過時時。每個基礎模型都有知識截止,這意味著其知識僅限于訓練時可用的數據。

2. 幻覺:當模型自信地做出錯誤反應時,就會發生幻覺。

檢索增強生成 (RAG) 擺脫了知識限制,整合了外部數據,從外部知識庫中檢索相關信息,增強模型的生成能力。

RAG工作流程是什么?

通過檢索增強技術,將用戶查詢與索引知識融合,利用大語言模型生成準確回答。

1. 知識準備:收集并轉換知識文檔為文本數據,進行預處理和索引。
2.嵌入與索引:使用嵌入模型將文本轉換為向量,并存儲在向量數據庫中。
3.查詢檢索:用戶查詢轉換為向量,從數據庫中檢索相關知識。
4.提示增強:結合檢索結果構建增強提示模版。
5.生成回答:大語言模型根據增強模版生成準確回答。


RAG技術架構是什么?

RAG技術架構主要由兩個核心模塊組成,檢索模塊(Retriever)和生成模塊(Generator)。

1.檢索模塊(Retriever):

文本嵌入:使用預訓練的文本嵌入模型(如GLM)將查詢和文檔轉換成向量表示,以便在向量空間中進行相似度計算。

向量搜索:利用高效的向量搜索技術(如FAISS、Milvus等向量數據庫)在向量空間中檢索與查詢向量最相似的文檔或段落。

雙塔模型:檢索模塊常采用雙塔模型(Dual-Encoder)進行高效的向量化檢索。雙塔模型由兩個獨立的編碼器組成,一個用于編碼查詢,另一個用于編碼文檔。這兩個編碼器將查詢和文檔映射到相同的向量空間中,以便進行相似度計算。

2.生成模塊(Generator):

強大的生成模型:生成模塊通常使用在大規模數據上預訓練的生成模型(如GLM),這些模型在生成自然語言文本方面表現出色。

上下文融合:生成模塊將檢索到的相關文檔與原始查詢合并,形成更豐富的上下文信息,作為生成模型的輸入。

生成過程:生成模型根據輸入的上下文信息,生成連貫、準確且信息豐富的回答或文本。

結合高效的檢索模塊(Retriever)與強大的生成模型(Generator),實現基于外部知識增強的自然語言生成能力。

文章轉自微信公眾號@架構師帶你玩轉AI

上一篇:

一文徹底搞懂多模態 - 多模態學習

下一篇:

一文徹底搞懂大模型 - Fine-tuning三種微調方式
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費