理解 RAG 第二部分:經典 RAG 的工作原理
在本系列的第一篇文章中,我們介紹了檢索增強生成 (RAG) ,并解釋了擴展傳統大型語言模型 (LLM)功能的必要性。我們還簡要概述了 RAG 的核心思想:從外部知識庫中檢索上下文相關的信息,以確保 LLM 生成準確且最新的信息,而不會產生幻覺,也無需不斷地重新訓練模型。
本系列的第二篇文章將揭秘傳統 RAG 系統運行的機制。盡管如今隨著人工智能的迅猛發展,各種增強版和更復雜的 RAG 版本幾乎每天都在涌現,但要理解最新的 RAG 方法,第一步是理解經典的 RAG 工作流程。
經典 RAG 工作流程
Retrieval-Augmented Generation (RAG) 系統是一種創新的架構,它結合了傳統的語言模型(LM)和信息檢索(IR)技術的優點,以提供更加精準和上下文相關的文本生成能力。下面是對 RAG 系統三個關鍵組件的詳細擴展說明:
1. 預訓練的語言模型(LLM)
預訓練的語言模型是 RAG 系統的基礎,它通常基于深度學習框架,如Transformer架構。這些模型通過在大量的未標注文本文檔上進行自我監督學習來獲取知識。這些數據集可能包含從數百萬到數十億的文檔,覆蓋廣泛的主題和領域。例如,GPT、BERT等著名模型都是通過這種方式訓練得到的。它們能夠理解語言的復雜性,包括語法結構、語義關系以及不同文本之間的聯系。這使得它們可以執行各種任務,如文本生成、問答、摘要等。
2. 向量數據庫/知識庫
向量數據庫,也稱為知識庫,在RAG系統中扮演著至關重要的角色。其主要功能是存儲經過處理的文本文檔,但與傳統數據庫不同的是,這里的文檔是以向量形式存儲的。向量化過程涉及到將文本轉換成數值表示,即所謂的嵌入向量。每個單詞、句子或整個文檔都可以被轉化為一個高維空間中的點,其中每個維度代表原始文本的一個特征。這種表示方式能夠捕捉文本的語義信息,使得相似含義的文本片段在向量空間中彼此接近。
這種方法有幾個顯著的優勢:
- 高效檢索:通過計算查詢向量與數據庫中文檔向量之間的相似度(如余弦相似度),可以快速找到最相關的文檔。
- 保持語義關聯:由于相似的文本內容在向量空間中相互靠近,因此即使查詢和目標文本之間沒有精確匹配的詞語,也可以找到語義相關的結果。
- 靈活性:向量數據庫支持動態更新,允許添加新的文檔而不必重新訓練整個模型。
3. 查詢或提示
用戶通過自然語言提出查詢或提示,這是與RAG系統交互的主要方式。當接收到用戶的查詢時,系統首先將其轉化為向量形式,然后使用上述提到的向量數據庫來搜索相關內容。這個過程不僅依賴于語言模型的理解能力,還需要有效地利用向量數據庫中的信息。一旦找到了相關的文檔或段落,它們就會被用作額外的知識來源,幫助調整或補充由語言模型生成的回答,確保最終輸出既準確又具有上下文相關性。
總之,RAG系統通過整合語言模型的強大表達能力和向量數據庫的高效檢索機制,實現了對復雜查詢的更深入理解和響應。這種架構特別適用于那些需要高度定制化和背景感知的應用場景,比如專業領域的問答系統、個性化推薦引擎等。
當用戶用自然語言向配備 RAG(Retrieval-Augmented Generation)引擎的 LLM 助手提出問題時,整個過程可以分為以下三個關鍵階段:
1. 檢索(Retrieval)
在這個階段,RAG 系統中的一個核心組件——檢索器(Retriever)——開始工作。檢索器的任務是從矢量數據庫中查找與用戶查詢相關的文檔或片段。
- 如何實現?
a.用戶的自然語言查詢首先被轉化為一個數值表示(向量),通常是通過一個預訓練的嵌入模型(如 Sentence-BERT 或其他文本編碼器)完成。
b.這個查詢向量隨后與矢量數據庫中的文檔向量進行比較,尋找語義上最接近的匹配項。
c.最終,檢索器會返回一組與查詢高度相關的文檔或段落。
- 為什么重要?
a.檢索器確保了系統能夠從外部知識庫中獲取最新的、相關的上下文信息,而不僅僅是依賴于 LLM 訓練數據中可能過時的知識。
b.這種機制特別適合需要實時更新或專業知識的場景。
2. 增強(Augmentation)
在檢索到相關文檔后,RAG 系統會將這些文檔的內容與用戶的原始查詢結合起來,形成一個增強版的查詢。
- 如何實現?
a.檢索到的相關文檔會被整合到用戶的輸入中,通常是以附加上下文的形式呈現。
b.例如,如果用戶問“什么是量子計算?”檢索到的相關文檔可能會包含關于量子計算的基本定義和原理,這些內容會被加入到查詢中,作為生成器的輸入。
- 為什么重要?
a.增強后的查詢為 LLM 提供了額外的背景信息,幫助它更好地理解問題的語境和需求。
b.這一步顯著提高了生成內容的相關性和準確性,尤其是在處理復雜或專業領域的問題時。
3. 生成(Generation)
最后,增強后的查詢被傳遞給 LLM(也稱為生成器),由它生成最終的答案。
- 如何實現?
a.LLM 接收到帶有上下文信息的增強查詢后,利用其強大的語言生成能力,基于提供的相關信息生成響應。
b.生成的文本不僅反映了用戶問題的核心,還融入了從外部知識庫中檢索到的事實性內容。
- 為什么重要?
a.生成器結合了 LLM 的語言表達能力和外部知識庫的事實性信息,從而生成更精確、更真實、更符合用戶需求的回答。
b.這種機制避免了純 LLM 可能產生的“幻覺”問題(即生成的內容雖然流暢但與事實不符)。
實際應用場景示例
假設用戶提問:“為什么天空是藍色的?”
- 檢索:
- 檢索器將查詢轉化為向量,并從矢量數據庫中找到與“天空顏色”相關的科學解釋文檔。
- 增強:
將檢索到的文檔內容(如光散射原理)與用戶查詢結合起來,形成增強版查詢:“為什么天空是藍色的?因為光散射現象導致藍光更容易被大氣層散射。”
生成:
LLM 根據增強版查詢生成答案:“天空看起來是藍色的,是因為陽光進入地球大氣層時,短波長的藍光比其他顏色的光更容易被空氣分子散射。這種現象被稱為瑞利散射。”
通過這三個階段,RAG 系統不僅提供了準確的答案,還確保了答案的科學性和可信度。
檢索器工作原理
檢索器是RAG系統中負責查找與用戶查詢相關的信息的關鍵部分。它不僅僅是簡單的關鍵詞匹配工具,而是一個能夠理解查詢語義的高級搜索引擎。
- 相似性搜索:這是檢索器工作的核心機制。首先,用戶的查詢被轉換成一個向量(通常是通過嵌入模型實現)。然后,這個向量會與矢量數據庫中的所有文檔向量進行比較。常用的相似度計算方法包括余弦相似度、歐幾里得距離等。通過這些數學計算,可以找到與查詢向量最接近的文檔向量,從而確定哪些文檔最有可能包含用戶尋找的答案。
- 上下文感知:除了基本的相似性搜索外,現代檢索器還能夠理解查詢背后的上下文。這意味著即使查詢中沒有直接提及某些關鍵字,如果它們在語義上相關,檢索器仍然可以找到合適的文檔。這極大地提高了檢索結果的相關性和準確性。
生成器工作原理
生成器通常指的是基于Transformer架構的大規模語言模型(LLM),其任務是在接收到來自檢索器的增強輸入后,生成高質量的回答。
- 編碼與解碼:在Transformer架構中,輸入首先通過編碼器轉化為一系列隱藏表示。這些隱藏表示捕捉了輸入文本的深層語義信息。接著,解碼器使用這些隱藏表示逐字生成輸出文本。在每個步驟中,解碼器不僅依賴于之前的隱藏狀態,還要預測下一個單詞是什么,確保生成的文本連貫且符合邏輯。
- 下一個單詞預測:這是生成過程的核心問題。給定前面的所有單詞,模型需要預測出最可能的下一個單詞。這個過程涉及復雜的概率計算,旨在選擇那些既合乎語法又保持內容一致性的單詞。隨著每次預測的完成,新生成的單詞會被添加到已有的序列中,作為下一次預測的基礎,直到滿足停止條件(如達到最大長度或生成了特定的結束標記)。
總的來說,檢索器通過高效的相似性搜索技術來識別最相關的文檔片段,并為生成器提供必要的上下文信息;而生成器則利用這些信息以及自身的語言理解能力來產生精確、流暢且上下文相關的回答。這種組合使得RAG系統能夠在各種應用場景中表現出色,特別是在需要準確知識理解和復雜語言處理的任務中。
小結
在本系列關于理解 RAG 的下一篇文章中,我們將揭示RAG 的融合方法,其特點是使用專門的方法組合來自多個檢索到的文檔的信息,從而增強生成響應的上下文。
RAG 中融合方法的一個常見示例是重新排序,它根據用戶相關性對檢索到的多個文檔進行評分和優先級排序,然后將最相關的文檔傳遞給生成器。這有助于進一步提升增強上下文的質量,以及語言模型最終生成的響應。