探索檢索增強生成(RAG)系統的演進與進展。了解 RAG 如何透過外部知識增強大型語言模型(LLM)。
引言
檢索增強生成(RAG)是一項有望解決大型語言模型(LLM)固有挑戰的解決方案,包括領域知識缺口、事實性問題與幻覺。透過整合資料庫等外部知識來源,RAG 增強了 LLM,使其在知識密集型環境或需要最新知識的特定領域應用中特別有價值。與其他方法不同,RAG 無需為特定任務重新訓練 LLM,這是一大優勢。其近期在對話代理中的普及,更凸顯了其相關性。
Gao 等人在 2023 年的一項最新調查提供了關於 RAG 關鍵發現、實際影響與最新方法的寶貴見解。該調查深入探討了 RAG 系統的各個組成部分,包括檢索、生成與增強技術,並檢視其評估方法、應用與相關技術。
什麼是 RAG
檢索增強生成(RAG)透過引用來自權威外部知識庫的參考資料,來增強大型語言模型的效能,從而補充模型廣泛的訓練數據。大型語言模型(LLM)利用龐大的數據集與數十億的參數,為問答、語言翻譯與文字補全等任務生成回應。RAG 擴展了 LLM 的能力,使其能夠針對特定領域或內部組織知識庫進行調整,且無需重新訓練模型。這種方法提供了一種經濟有效的方式,來增強 LLM 的輸出,確保其在各種情境中的相關性、準確性與實用性。
RAG 的關鍵組成部分
我們可以將過程分解為以下步驟/組成部分:
- 輸入:這是指向 LLM 系統提出的問題。若無 RAG,LLM 會直接回應該問題。
- 索引:使用 RAG 時,會對一組相關文件進行索引。這包括將文件分塊、為這些區塊建立嵌入,然後將它們索引到向量儲存庫中。在推理期間,查詢也會以類似方式嵌入。
- 檢索:透過將查詢與索引向量進行比對,來檢索相關文件,從而選出「相關文件」。
- 生成:將檢索到的文件與原始提示合併,以提供額外上下文。然後將此組合文字與提示輸入模型進行回應生成,最終輸出提供給使用者。
在給定的範例中,僅依賴模型而沒有 RAG 時,可能因缺乏最新知識而無法充分回應。相反地,使用 RAG 使系統能夠存取必要資訊,以準確回答問題。
RAG 範式
近年來,RAG 系統經歷了演進,從 Naive RAG 發展到 Advanced RAG 與 Modular RAG。此進展旨在克服與效能、成本與效率相關的特定挑戰。
Naive RAG
Naive RAG 按照前述的索引、檢索與生成傳統流程運作。基本上,它利用使用者輸入查詢相關文件,然後將其與提示合併,提供給模型生成最終回應。若應用涉及多輪對話互動,可以將對話歷史整合到提示中。
然而,Naive RAG 有其局限性,包括低精確度(導致檢索到的區塊不對齊)與低召回率(未能檢索到所有相關區塊)。LLM 也有可能被餵入過時資訊,這是 RAG 系統最初旨在解決的主要問題。這可能導致幻覺問題,以及生成不佳且不準確的回應。
此外,在實施增強時,可能會出現冗餘與重複的問題。處理多個檢索到的段落涉及排序、以及協調風格與語氣。此外,一個重大挑戰在於確保生成任務不會過度依賴增強資訊,從而導致模型僅重複檢索到的內容。
Advanced RAG
Advanced RAG 針對 Naive RAG 中觀察到的缺點提供了解決方案,尤其是透過提升檢索品質。此改進涵蓋了檢索前、檢索與檢索後流程的最佳化。
檢索前階段涉及透過五個關鍵階段來改進數據索引:提升數據粒度、最佳化索引結構、添加元數據、對齊最佳化與混合檢索。這些措施旨在提升索引數據的品質。
透過最佳化嵌入模型本身,可以進一步增強檢索階段。此最佳化直接影響上下文區塊的品質。策略可能包括微調嵌入以提高檢索相關性,或使用動態嵌入以更好地捕捉上下文細微差別(例如 OpenAI 的 embeddings-ada-02 模型)。
檢索後最佳化專注於規避上下文視窗限制,以及管理雜訊或干擾資訊。重新排序是應對這些挑戰的常見方法,涉及將相關上下文移至提示邊緣,或重新計算查詢與相關文字區塊之間的語義相似度等技術。提示壓縮技術也可能有助於管理這些問題。
Modular RAG
Modular RAG,顧名思義,增強了檢索增強生成框架中的功能模組。它涉及整合如用於相似性檢索的搜尋模組,以及在檢索器中應用微調。Naive RAG 與 Advanced RAG 都可以視為 Modular RAG 的特定實例,包含固定模組。然而,Extended RAG 引入了額外的模組,如搜尋、記憶、融合、路由、預測與任務適配器,每個都針對不同的挑戰。這些模組可以重新配置以適應特定任務上下文,使 Modular RAG 具有更大的多樣性與靈活性。這種靈活性允許根據任務需求添加、替換或調整模組。
由於建構 RAG 系統的靈活性增加,人們提出了多種最佳化技術來改進 RAG 流程:
- 混合搜尋探索:這種方法結合了關鍵字搜尋與語義搜尋等搜尋技術,以檢索相關且上下文豐富的資訊,特別有利於處理多樣化的查詢類型與資訊需求。
- 遞迴檢索與查詢引擎:這涉及一個遞迴檢索過程,從小的語義區塊開始,逐步檢索更大的區塊以豐富上下文,在效率與上下文豐富度之間取得平衡。
- StepBack-prompt:這種提示技術允許 LLM 抽象出概念與原則,引導推理走向更紮實的回應。在 RAG 框架中採用此技術,可使 LLM 在必要時超越特定實例,進行更廣泛的推理。
- 子查詢:可以針對不同場景採用不同的查詢策略,例如樹狀查詢或按順序查詢區塊。例如,LlamaIndex 提供了一個子問題查詢引擎,將一個查詢分解為多個問題,每個問題使用不同的相關數據來源。
- 假設性文件嵌入(HyDE):HyDE 會生成一個假設性答案來回應查詢,對其進行嵌入,並利用它來檢索與假設性答案類似的文件,而不是直接使用查詢。
RAG 的框架
本節總結了構成 RAG 系統的各個組成部分(檢索、生成與增強)的重大進展。
檢索
RAG 系統中的檢索涉及從檢索器中檢索高度相關的上下文,可以透過多種方式進行增強:
增強語義表示:
改進分塊策略對於根據內容與應用需求選擇最合適的分塊策略至關重要。不同的模型可能在不同區塊大小下表現出色,例如句子轉換器適用於單一句子,而 text-embedding-ada-002 則適用於包含 256 或 512 個 token 的區塊。常見的做法是嘗試不同的分塊策略,以最佳化 RAG 系統中的檢索,同時考慮使用者問題長度、應用與 token 限制。
對於專業領域,可能需要微調嵌入模型,以確保使用者查詢能被準確理解。像 BAAI 開發的 BGE-large-EN 這樣的嵌入模型可以針對領域知識或特定下游任務進行微調,以最佳化檢索相關性。
對齊查詢與文件:
查詢重寫技術,如 Query2Doc、ITER-RETGEN 與 HyDE,專注於改進缺乏語義資訊或包含不精確措辭的查詢。
嵌入轉換則最佳化查詢嵌入,使其與更接近任務的潛在空間對齊。
對齊檢索器與 LLM:
微調檢索器利用 LLM 的回饋信號來改進檢索模型。例如增強適配檢索器(AAR)、REPLUG 與 UPRISE。
納入外部適配器,如 PRCA、RECOMP 與 PKG,有助於檢索器與 LLM 之間的對齊過程。
生成
RAG 系統中的生成器在將檢索到的資訊轉換為連貫文字方面扮演關鍵角色,最終形成模型的最終輸出。此過程通常涉及多樣化的輸入數據,因此需要努力改進語言模型對來自查詢與文件輸入的適應。這些改進可以透過檢索後過程與微調來實現:
使用凍結 LLM 進行檢索後處理:這種方法專注於在不修改 LLM 本身的情況下,提升檢索結果的品質。使用了資訊壓縮與結果重新排序等操作。資訊壓縮有助於減少雜訊、解決上下文長度限制,並增強生成效果,而重新排序則重新排列文件,將最相關的項目置於頂部。
針對 RAG 微調 LLM:對生成器進行進一步的最佳化或微調,確保生成的文字既自然又能有效利用檢索到的文件,從而提升 RAG 系統的整體效能。
增強
增強涵蓋了將檢索到的段落中的上下文與當前生成任務無縫整合的過程。在深入探討增強過程(包括其階段與數據)之前,我們先建立 RAG 核心組件的分類。
檢索增強可以應用於不同階段,包括預訓練、微調與推理。
增強階段:例如,RETRO 是一個透過基於外部知識添加額外編碼器,從頭開始進行大規模預訓練的檢索增強系統。微調也可以與 RAG 整合,以增強與改進 RAG 系統。在推理階段,使用了多種技術來有效整合檢索到的內容,以滿足特定任務需求,並進一步改進 RAG 過程。
增強來源:RAG 模型的有效性在很大程度上取決於增強數據來源的選擇。這些來源可以分為非結構化、結構化與 LLM 生成的數據。
增強過程:為了解決複雜問題(如多步驟推理),人們提出了多種方法:
- 迭代檢索:涉及執行多次檢索循環,以豐富資訊的深度與相關性。利用此方法的知名方法包括 RETRO 與 GAR-meets-RAG。
- 遞迴檢索:迭代地將一個檢索步驟的輸出作為另一個檢索步驟的輸入,從而能夠對複雜查詢(例如學術研究與法律案例分析)相關資訊進行更深入的探索。知名方法包括 IRCoT 與 Tree of Clarifications。
- 自適應檢索:透過識別檢索的最佳時機與內容,根據特定需求自訂檢索過程。利用此方法的知名方法包括 FLARE 與 Self-RAG。
下圖提供了 RAG 研究的全面表示,說明了增強的各個方面,包括階段、來源與過程。
RAG 評估
評估 RAG 模型在各種應用場景中的效能,對於理解與最佳化其有效性至關重要。傳統上,RAG 系統的評估重點是使用任務特定指標(如 F1 與 EM)來衡量其在下游任務中的表現。RaLLe 是一個用於評估知識密集型任務中檢索增強大型語言模型的知名框架。
RAG 中的評估目標包括檢索與生成,旨在評估檢索到的上下文與生成內容的品質。評估檢索品質常用的指標來自推薦系統與資訊檢索等領域,包括 NDCG 與 Hit Rate。同時,評估生成品質涉及評估未標記內容的相關性與有害性,或標記內容的準確性。RAG 評估方法可能包括手動與自動方法。
RAG 框架的評估通常側重於三個主要品質分數與四項能力。品質分數包括測量上下文相關性(檢索到上下文的精確度與特異性)、答案忠實度(答案對檢索到上下文的忠實程度)與答案相關性(答案與所提出問題的相關性)。此外,四項能力有助於衡量 RAG 系統的適應性與效率:雜訊穩健性、負面拒絕、資訊整合與反事實穩健性。以下是用於評估 RAG 系統不同面向的指標摘要:
各種基準測試(如 RGB 與 RECALL)被用於評估 RAG 模型。已創建了像 RAGAS、ARES 與 TruLens 這樣的工具,以自動化 RAG 系統的評估過程。其中一些系統使用 LLM 來確定上述定義的某些品質分數。
RAG 的挑戰與未來
在這篇概述中,我們探討了 RAG 的各個研究面向,以及增強其檢索、增強與生成組件的不同策略。以下是 Gao 等人(2023)在我們持續開發與改進 RAG 系統時強調的幾個挑戰:
- 上下文長度:隨著 LLM 不斷擴展上下文視窗大小,調整 RAG 以確保捕獲高度相關且關鍵的上下文提出了挑戰。
- 穩健性:處理反事實與對抗性資訊,對於衡量與增強 RAG 系統的穩健性至關重要。
- 混合方法:正在進行的研究旨在更好地理解如何最佳化使用 RAG 與微調模型。
- 擴展 LLM 的角色:人們越來越有興趣增加 LLM 的角色與能力,以進一步增強 RAG 系統。
- 規模定律:研究 LLM 規模定律及其在 RAG 系統中的應用,仍然是一個需要進一步理解的領域。
- 生產就緒的 RAG:開發生產級 RAG 系統需要在各個領域(包括效能、效率、數據安全與隱私)具備卓越的工程能力。
- 多模態 RAG:雖然 RAG 研究主要側重於文本任務,但人們越來越有興趣擴展模態以支援更廣泛的領域,如圖像、音頻、視頻與程式碼。
- 評估:使用 RAG 構建複雜應用程式需要細緻的指標與評估工具,以評估上下文相關性、創造力、內容多樣性、事實性等。此外,還需要改進 RAG 的可解釋性研究與工具。
如何將 RAG 與大型語言模型整合
使用大型語言模型(LLM)實現檢索增強生成(RAG)涉及幾個步驟,包括數據集準備與整合到 LLM 設置中。此過程使 LLM 能夠利用檢索技術,生成更準確且上下文相關的答案。
*請參閱我們部落格中的文章,了解如何將您的 LLM 與 RAG 技術整合:《逐步教程:將檢索增強生成(RAG)與大型語言模型整合》

來源:novita.ai
結論
總而言之,RAG 系統的演進非常迅速,先進範式的出現提供了客製化,並增強了在各個領域的效能與實用性。對 RAG 應用日益增長的需求,推動了改進其不同組成部分的方法的發展。從混合方法到自我檢索,現代 RAG 模型中正探索著廣泛的研究領域。
novita.ai 是一個一站式平台,為無限創造力提供 100 多個 API。從圖像生成、語言處理到音頻增強與視頻操作,採用便宜的即付即用模式,讓您在建構自己的產品時無需煩惱 GPU 維護。立即免費試用。
推薦閱讀
