論文地址:https://arxiv.org/pdf/2312.10997.pdf

? ? ? 大型語言模型(LLMs)展示了強大的能力,但在實際應用中仍面臨挑戰,如幻覺現象、知識更新緩慢,以及在回答中缺乏透明度。檢索增強生成(RAG)指的是在使用LLMs回答問題之前,從外部知識庫中檢索相關信息。RAG已被證明能顯著提高答案的準確性,減少模型的幻覺現象,特別是對于知識密集型任務。通過引用來源,用戶可以驗證答案的準確性,并增加對模型輸出的信任。它還促進了知識更新和特定領域知識的引入。RAG有效地結合了LLMs的參數化知識和非參數化的外部知識庫,使其成為實施大型語言模型的最重要方法之一。本文概述了LLMs時代RAG的發展范式,總結了三種范式:Naive RAGAdvanced RAGModular RAG。論文對RAG的三個主要組成部分的總結和組織:檢索器生成器增強方法,以及每個組件中的關鍵技術。此外,還討論了如何評估RAG模型的有效性,介紹了RAG的兩種評估方法,強調了評估的關鍵指標和能力,并提出了最新的自動評估框架。最后,從垂直優化、橫向可擴展性以及RAG的技術棧和生態系統三個方面介紹了潛在的未來研究方向。

一、介紹

      大型語言模型(LLMs)在自然語言處理(NLP)領域的表現超越了之前任何模型。GPT系列模型、LLama系列模型、Gemini以及其他大型語言模型在多個評估基準上展現了卓越的語言和知識掌握能力,超越了人類水平。

? ? ? 然而,大型語言模型也顯示出許多缺點。它們常常制造虛假事實,在處理特定領域或高度專業化的查詢時缺乏知識。例如,當所需信息超出模型訓練數據的范圍或需要最新數據時,LLM可能無法提供準確的答案。這一限制在將生成型人工智能部署到現實世界的生產環境中構成挑戰,因為盲目使用黑盒LLM可能不夠。

       傳統上,神經網絡通過微調模型以參數化知識來適應特定領域或專有信息。雖然這種技術取得了顯著成果,但它需要大量的計算資源,成本高昂,并需要專業知識,使其適應性較差。參數化知識和非參數化知識發揮著不同的作用。參數化知識通過訓練LLMs獲得,并存儲在神經網絡權重中,代表了模型對訓練數據的理解和概括,構成生成回應的基礎。另一方面,非參數化知識存在于外部知識源中,如向量數據庫,不直接編碼到模型中,而是作為可更新的補充信息。非參數化知識使LLMs能夠訪問和利用最新或特定領域的信息,提高回應的準確性和相關性。

? ? ? ?純參數化的語言模型(LLMs)將從大量語料庫中獲得的世界知識存儲在模型的參數中。然而,這類模型存在局限性。首先,難以保留訓練語料中的所有知識,尤其是較不常見和更具體的知識。其次,由于模型參數無法動態更新,參數化知識隨時間容易過時。最后,參數的擴展導致訓練和推理的計算開銷增加。為了解決純參數化模型的限制,語言模型可以采用半參數化方法,通過將非參數化語料庫數據庫與參數化模型整合。這種方法被稱為檢索增強生成(RAG)。

       檢索增強生成(RAG)這一術語最初由[Lewis et al., 2020]引入。它結合了預訓練的檢索器和預訓練的seq2seq模型(生成器),并進行端到端微調,以更可解釋和模塊化的方式捕獲知識。在大型模型出現之前,RAG主要專注于端到端模型的直接優化。檢索方面常見的做法是密集檢索,如使用基于向量的密集通道檢索(DPR),以及在生成方面訓練較小的模型。由于整體參數規模較小,檢索器和生成器通常會進行同步的端到端訓練或微調。

? ? ? ?自ChatGPT等LLM出現后,生成式語言模型成為主流,在各種語言任務中展現出令人印象深刻的性能。然而,LLMs仍面臨幻覺、知識更新和數據相關問題。這影響了LLMs的可靠性,在某些嚴肅任務場景中,尤其是需要訪問大量知識的知識密集型任務中,LLMs表現不佳,如開放領域問答和常識推理。參數內的隱含知識可能不完整且不足。

? ? ? ?后續研究發現,將RAG引入大型模型的上下文學習(ICL)中可以緩解上述問題,具有顯著且易于實現的效果。在推理過程中,RAG動態地從外部知識源檢索信息,使用檢索到的數據作為參考來組織答案。這顯著提高了回應的準確性和相關性,有效解決了LLMs中存在的幻覺問題。這種技術在LLM問世后迅速受到關注,已成為改善聊天機器人和使LLM更實用的最熱門技術之一。通過將事實知識與LLMs的訓練參數分離,RAG巧妙地結合了生成模型的強大能力和檢索模塊的靈活性,為純參數化模型固有的知識不完整和不足問題提供了有效的解決方案。

本文系統地回顧和分析了RAG的當前研究方法和未來發展路徑,將其歸納為三個主要范式:Naive RAG、Advanced RAG和Modular RAG。隨后,論文提供了三個核心組成部分的綜合總結:檢索、增強和生成,突出了RAG的改進方向和當前技術特點。在增強方法部分,當前的工作被大致為三個方面:RAG的增強階段增強數據源增強過程。此外,論文總結了評估系統、適用場景和與RAG相關的其他內容。通過本文,讀者將對大型模型和檢索增強生成有更全面和系統的了解。他們將熟悉知識檢索增強的演變路徑和關鍵技術,能夠辨別不同技術的優缺點,識別適用場景,并探索當前實際應用中的典型案例。值得注意的是,在以前的工作中,Feng et al.[2023b]系統回顧了將大型模型與知識結合的方法、應用和未來趨勢,主要關注知識編輯和檢索增強方法。Zhu et al.[2023]介紹了大型語言模型檢索系統增強的最新進展,特別關注檢索系統。同時,Asai et al.[2023a]專注于“什么”、“何時”、“如何”的問題,分析并闡釋了基于檢索的語言模型的關鍵過程。與之相比,本文旨在系統地概述檢索增強生成(RAG)的整個過程,并特別關注通過知識檢索增強大型語言模型生成的研究。

RAG算法和模型的發展在圖1中進行了說明。在時間線上,大部分與RAG相關的研究都是在2020年之后出現的,2022年12月ChatGPT發布成為一個重要的轉折點。自ChatGPT發布以來,自然語言處理領域的研究進入了大模型時代。Naive RAG技術迅速獲得重視,導致相關研究數量的快速增加。在增強策略方面,自RAG概念提出以來,就一直在進行預訓練和監督微調階段的強化研究。然而,在推理階段的強化研究大多出現在LLMs時代。這主要是由于高性能大模型的高訓練成本。研究人員試圖通過在推理階段包含RAG模塊,以成本有效的方式將外部知識融入模型生成中。關于增強數據的使用,早期的RAG主要關注于非結構化數據的應用,特別是在開放域問答的背景下。隨后,檢索的知識來源范圍擴展,使用高質量數據作為知識來源有效地解決了大模型中錯誤知識內化和幻覺等問題。這包括結構化知識,知識圖譜是一個代表性的例子。最近,自我檢索引起了更多的關注,這涉及到挖掘LLMs本身的知識以增強它們的性能。

        本論文的后續章節結構如下:第二章介紹RAG的背景。第三章介紹RAG的主流范式。第四章分析RAG中的檢索器。第五章著重介紹RAG中的生成器。第六章強調介紹RAG中的增強方法。第七章介紹RAG的評估系統。第八章提供了對RAG未來發展趨勢的展望。最后,在第九章中,總結了本綜述的主要內容。

二、背景

       在本章中,我們將介紹RAG的定義,如以及RAG與諸如微調之類的其他模型優化技術之間的比較。

2.1 定義

       RAG的含義隨著技術的發展而擴展。在大語言模型時代,RAG的具體定義是指模型,當回答問題或生成文本,首先從大量文檔中檢索相關信息。隨后,它利用這些檢索到的信息來生成響應或文本,從而提高預測的質量。RAG方法允許開發人員避免對為每個特定任務重新訓練整個大型模型。相反,他們可以附加一個知識庫,提供額外的向模型輸入信息并提高準確性其回應。RAG方法特別適合用于知識密集型任務。總之,RAG系統由兩個關鍵階段組成:

  1. 利用編碼模型基于問題檢索相關文檔,如BM25、DPR、ColBERT和類似方法;
  2. 生成階段:使用檢索到的上下文作為條件,系統生成文本。

2.2 RAG與微調

? ? ? ?在大型語言模型(LLM)的優化中除了RAG,另一種重要的優化技術正在進行微調。

       RAG類似于為模型提供教科書,允許它基于特定查詢檢索信息。這該方法適用于模型需要回答特定的詢問或解決特定的信息檢索任務。然而,RAG不適合教模型來理解廣泛的領域或學習新的語言,格式或樣式。

       微調類似于讓學生通過廣泛的學習內化知識。這種方法當模型需要復制特定的結構、樣式或格式時非常有用。微調可以提高非微調模型的性能,并使交互更加頻繁有效率的它特別適合強調基礎模型中的現有知識,修改或自定義模型的輸出,并向提供復雜的指令模型然而,微調不適合合并模型中的新知識或需要的情況新用例的快速迭代。

? ? ? ?微調類似于讓學生通過長期學習內化知識。此方法適用當模型需要復制特定的結構、樣式等時,或格式。微調可以實現優于的性能非微調模型和交互更有效。微調特別適合強調現有基本模型中的知識,修改或自定義模型的輸出,并用復雜的指令指示模型。但是,微調不適合添加新的為模型或需要快速迭代新用例的場景提供知識。RAG和微調(FT)的比較可參考如下表1。

RAG和微調并不互斥,但可以相互補充,可以在不同level增強模型。在某些情況下,將這兩者結合起來技術可以實現最佳的模型性能。使用RAG進行優化和微調的整個過程可能需要多次迭代才能獲得令人滿意的結果。現有研究已經證明了檢索增強生成(RAG)的顯著優勢與其他優化大型語言模型的方法相比:

三、RAG框架

? ? ? ?RAG的研究范式在不斷演變。本章主要介紹了RAG研究范式的演變,我們將其分為三種類型:Naive?RAGAdvanced RAGModular RAG。盡管早期RAG具有成本優勢,比原生LLM更好;它仍然面臨許多不足。Advanced RAGModular?RAG的出現旨在解決Naive RAG的具體缺陷。

3.1 Naive RAG

? ? ? ?Naive RAG研究范式代表了最早的方法論在廣泛使用后不久就變得突出采用ChatGPT。Naive RAG的經典過程是:索引檢索生成。Naive RAG概括為“檢索”-“讀取”框架。

索引

      從源獲取數據并為其建立索引的管道通常是離線處理的。具體來說,數據索引的構建包括以下步驟:

  1. 數據索引:清洗和提取原始數據、轉換諸如PDF、HTML、Word、Markdown等不同文件格式轉換為純文本;
  2. 分塊:將加載的文本分為較小的塊。因為語言模型通常有上下文長度有限制,因此有必要創建盡可能小的文本塊(不是越小越好);
  3. 嵌入和創建索引:通過語言模型將文本編碼為向量。得到的向量將用于后續的檢索過程,以計算向量和問題向量之間的相似性。嵌入模型需要很高的推理速度。由于需要對大量的語料庫進行編碼,并在用戶提問時實時對問題進行編碼,因此模型的參數大小不應太大。生成嵌入后,下一步是創建索引,存儲原始語料庫塊,并以鍵值對的形式進行嵌入,以便在未來快速頻繁地搜索。

檢索

       給定用戶的輸入,使用與第一個stage相同的模型把query轉換為向量。然后計算query嵌入和語料庫中的文檔塊嵌入的相似度。選擇前K個相似度最高的文檔塊作為增強上下文信息。

生成

      把給定的問題和相關文檔合并為新的Prompt提示。然后,大型語言模型基于所提供的信息來回答所述問題。它會判斷是基于大型模型知識還是僅基于給定信息進行回答,取決于不同任務的需要。如果有對話歷史信息,也可以合并到Prompt中進行多輪對話。

Naive RAG的缺點

       Naive RAG在三個領域面臨主要挑戰:檢索質量響應生成質量增強過程

      關于檢索質量,問題是多方面的。主要問題是精度低,檢索集中并非所有塊都與查詢相關,這會導致潛在的幻覺問題。第二個問題是低召回率,當所有相關塊沒有全部被召回時,LLM就沒有獲得足夠的上下文來合成答案。此外,過時的信息帶來了另一個挑戰,即數據冗余或過時的數據可能導致不準確的檢索結果。

       就生成響應的質量而言,問題同樣是多樣化的。幻覺是一個突出的問題,模型編造了一個上下文中不存在的答案。另一個問題是召回的信息可能是不相關的,導致模型生成的答案無法解決查詢問題。此外,毒性或偏見,即模型產生有害或冒犯性反應,是另一個問題。

       最后,增強過程也面臨一些挑戰。根據當前生成任務,從相關段落檢索文檔是至關重要的。如果處理不當,輸出可能會顯得不連貫或不連貫。冗余和重復是另一個問題,特別是當多個檢索到的段落包含相似的信息,導致生成步驟中的內容重復時。此外,確定多個檢索到的段落對生成任務的重要性或相關性具有挑戰性,并且擴充過程需要平衡每個段落的值適當。檢索到的內容也可能來自不同的寫作風格或語調,增強過程需要調和這些差異以確保輸出的一致性。最后,生成模型可能過度依賴增強信息,導致輸出僅重復檢索到的內容,而不提供新的價值或合成信息。

3.2 Advanced RAG

       Advanced RAG針對Naive RAG的不足進行了有針對性的改進。在檢索生成的質量方面,Advanced RAG結合了檢索前和檢索后的方法。為了解決Naive RAG遇到的索引問題,Advanced RAG通過滑動窗口、細粒度分割和元數據等方法優化了索引。與此同時,它已經提出了優化檢索過程的各種方法。在具體實現方面,Advanced RAG可以通過管道或端到端的方式進行調整。

3.2.1 預檢索過程

       優化數據索引的目的是提高索引內容的質量。目前,有五種主要策略用于此目的:增加索引數據的粒度優化索引結構添加元數據對齊優化混合檢索

  1. 增強數據粒度:預索引優化的目標是為了提高文本的標準化、一致性,并確保事實的準確性以及上下文豐富性,以保證RAG系統的性能。文本標準化包括去除不相關的信息和特殊字符,以提高檢索器的效率。就一致性而言,主要任務是消除實體和術語中的歧義,同時消除重復或冗余信息,以簡化檢索者的工作重點。確保事實的準確性至關重要,只要可能,就應核實每一條數據的準確性。上下文保留,以適應系統在現實世界中的交互上下文,可以通過添加另一層具有領域特定注釋的上下文,再加上通過用戶反饋循環的持續更新來實現。時間敏感性是重要的上下文信息,應設計機制來刷新過時的文檔。總之,優化索引數據的重點應該放在清晰度、上下文和正確性上,以使系統高效可靠。以下介紹了最佳實踐。
  2. 優化索引結構:可以是通過調整塊的大小、改變索引路徑和合并圖結構信息來實現。調整區塊(從小到大)的方法包括收集盡可能多的相關信息上下文盡可能地減少噪聲。在構建RAG系統時,塊大小是一個關鍵參數。有不同的評估框架來比較單個塊的大小。LlamaIndex使用GPT4來評估保真度和相關性,LlamaIndex對不同的分塊方法有自動化評估方法。跨多個索引路徑查詢的方法與以前的元數據過濾和分塊方法密切相關,并且可能涉及同時跨不同索引進行查詢。標準索引可用于查詢特定查詢,或者獨立索引可用于基于元數據關鍵字進行搜索或篩選,例如作為特定的“日期”索引。       引入圖結構將實體轉換為圖節點,將它們的關系轉換為圖關系。這可以通過利用節點之間的關系來提高準確性,尤其是對于多跳問題。使用圖形數據索引可以增加檢索的相關性。
  3. 添加元數據信息:這里的重點是將引用的元數據嵌入到塊中,例如用于篩選的日期和目的。添加參考文獻的章節和小節等元數據也有利于改進檢索。當我們將索引劃分為多個塊時,檢索效率就成了一個問題。首先過濾元數據可以提高效率和相關性。
  4. 對齊優化:這一策略主要是解決對齊問題和之間的差異文件。對齊概念包括引入假設問題,創建適合每個文檔回答的問題,并將這些問題嵌入(或替換)為文件。這有助于解決文檔之間的對齊問題和差異。
  5. 混合檢索:這種策略的優勢在于利用了不同檢索技術的優勢。智能地結合各種技術,包括基于關鍵字的搜索、語義搜索和矢量搜索可以適應不同的查詢類型和信息需求,確保對最相關和上下文豐富的信息的一致檢索。混合檢索可以作為檢索策略的有力補充,增強RAG管道的整體性能。

3.2.2 嵌入

? ? ? ?微調嵌入模型直接影響RAG的有效性。微調的目的是增強檢索到的內容和查詢之間的相關性。微調嵌入的作用類似于在生成語音之前調整耳朵,優化檢索內容對生成輸出的影響。通常,用于微調嵌入的方法屬于在特定領域上下文中調整嵌入和優化檢索步驟的類別。特別是在處理進化術語或稀有術語的專業領域,這些定制的嵌入方法可以提高檢索相關性。BGE嵌入模型是一種精細調諧和高性能嵌入模型,如BAAI 3開發的BGE-large-EN。為了創建用于微調BGE模型的訓練數據,首先使用像gpt-3.5-turbo這樣的LLM來基于文檔塊來制定問題,其中問題和答案(文檔塊)形成用于微調過程的微調對。

? ? ? ?動態嵌入根據單詞出現的上下文進行調整,不同于為每個單詞使用單個向量的靜態嵌入。例如在BERT這樣的transformer模型中,根據周圍的單詞,同一個單詞可以具有不同的嵌入。理想情況下,嵌入應該包含盡可能多的背景以確保“健康”的結果。基于GPT等大型語言模型的原理,OpenAI的embeddings-ada-02比靜態嵌入模型更復雜,可以捕獲一定程度的上下文。雖然它擅長上下文理解,但它對上下文的敏感性可能不如GPT4等最新的全尺寸語言模型。

3.2.3 后期檢索過程

? ? ? 在從數據庫中檢索到有價值的上下文后,將其與查詢合并以輸入LLM會帶來挑戰。同時向LLM提交所有相關文件可能超過上下文窗口限制。連接眾多形成冗長檢索提示的文檔是無效的,引入噪聲并阻礙LLM對關鍵問題的關注信息檢索到的內容的附加處理是解決這些問題所必需的。

3.2.4 RAG管道優化

       檢索過程的優化旨在增強RAG系統的效率和信息質量,Current研究主要集中在智能地將各種搜索技術,優化檢索步驟,介紹認知回溯的概念,靈活應用各種查詢策略,并利用嵌入相似性。這些努力共同努力在RAG中上下文信息的高效性和豐富性檢索

3.2.5 模塊化RAG

? ? ? ?模塊化RAG結構打破了傳統索引、檢索和生成的Naive RAG框架,在整個過程中提供更大的多樣性和靈活性。一方面,它集成了各種方法擴展功能模塊,例如合并搜索相似性檢索模塊,并在檢索器中應用微調方法。此外,具體問題導致了重組的出現RAG模塊和迭代方法。模塊化RAG范式正在成為RAG領域的主流,允許串行管道或端到端訓練方法跨多個模塊。三種RAG的比較范例如圖3所示。

新模塊

新模式

       Modular RAG的組織方法是靈活的,允許模塊的替換或重新配置在基于特定問題上下文的RAG過程中。對于Naive RAG,它由兩個模塊組成檢索和生成(在中稱為讀取或合成一些文獻),該框架提供了適應性和豐富性。目前的研究主要探討兩個組織涉及模塊的添加或替換的范例,以及之間組織流程的調整模塊。

? ? ? ?添加或替換模塊的策略需要維護Retrieval Read的結構,同時引入額外的模塊來增強特定的功能。RRR提出了RewriteRetrieve Read過程,利用LLM性能作為重寫器模塊強化學習的獎勵。這允許重寫器調整檢索查詢,從而提高讀取器的下游任務性能。類似地,模塊可以在生成讀取等方法中選擇性地替換,其中LLM生成模塊取代了檢索模塊。背誦閱讀將外部檢索轉換為從模型權重的檢索,最初讓LLM記憶任務相關信息,并生成用于處理知識密集型自然語言處理任務的輸出。

調整模塊之間的流程,重點是增強語言模型和檢索模型之間的交互。DSP引入了演示搜索預測框架,將上下文學習系統視為一個明確的程序,而不是一個終端任務提示,以解決知識密集型任務。ITER-RETGEN利用生成的內容來指導檢索,在Retrieve ReadRetrieve Read流中迭代執行“檢索增強的生成”和“生成增強的檢索”。Self-RAG遵循決策-檢索-反映-讀取過程,引入了一個用于主動判斷的模塊。這種自適應和多樣化的方法允許在模塊化RAG框架內動態組織模塊。

四、檢索器

       在RAG的上下文中,“R”代表檢索、服務RAG管道中檢索top-k相關信息的作用來自龐大知識庫的文檔。然而,手工制作一個高質量的尋回器是一項不平凡的任務。在本章中,我們圍繞三個關鍵問題進行討論:1)如何獲得準確的語義表示?2) 如何以匹配查詢和文檔的語義空間?3)如何將檢索器的輸出與首選項對齊大型語言模型的?

4.1 如何獲得準確的語義陳述?

       在RAG中,語義空間是多維空間,其中查詢和文檔被映射。當我們進行檢索時,它是在語義空間內測量的。如果語義表達不準確,那么它對RAG的影響是致命的,本節將介紹兩種方法來幫助我們構建準確的語義空間。

區塊優化

       在處理外部文檔時,第一步是分塊以獲得細粒度的特征。然后塊被嵌入。但是,嵌入過大或過小的文本塊可能不會獲得好的結果。因此,找到語料庫中文檔的最佳塊大小至關重要以確保搜索結果的準確性和相關性。

? ? ? ?在選擇分塊策略時,重要的考慮因素包括:被索引內容的特征、使用的嵌入模型及其最佳塊大小、用戶查詢的預期長度和復雜性,以及檢索結果在特定應用程序中的使用方式。例如,對于較長或較短的內容,應選擇不同的分塊模型。此外,不同的嵌入模型在不同的塊大小下表現不同;例如句子轉換器更適合單句,而text-embedding-ada-002更適合包含256或512個標記的塊。此外,用戶輸入問題文本的長度和復雜性,以及應用程序的特定需求,如語義搜索或問答,都會影響分塊策略的選擇。這可能與您選擇的LLM的代幣限制直接相關,并且可能要求您調整塊大小。事實上,準確的查詢結果是通過自適應地應用幾種分塊策略來實現的;沒有最好的,只有最合適的

       目前對RAG的研究采用了多種塊優化方法來提高檢索效率和準確性。滑動窗口技術等技術通過多次檢索聚合全局相關信息來實現分層檢索。Small2big技術在搜索過程中使用小文本塊,并提供較大的附屬文本塊到語言模型以進行處理。摘要嵌入技術對文檔摘要執行TopK檢索,提供完整的文檔上下文。元數據篩選技術利用文檔元數據進行篩選。圖形索引技術將實體和關系轉換為節點和連接,顯著增強了多跳問題的相關性。這些方法的融合導致改進的檢索結果和增強的性能抹布。

微調嵌入模型

       在獲得適當大小的塊之后,我們需要通過嵌入模型,因此嵌入能否有效地表示語料庫。如今,優秀的嵌入式模型已經出現,如AUAE,Voyage,BGE,他們已經在大規模語料庫上進行了預訓練,但他們可能不能準確地表示特定領域的語料庫信息當應用于特定域時。此外,特定任務嵌入模型的微調對于確保該模型理解與內容相關性相關的用戶查詢,而未經微調的模型可能不是能夠滿足特定任務的需要。因此,微調嵌入模型對于下游應用程序是必不可少的。嵌入微調方法有兩個基本范式。

領域知識微調

       為了使嵌入模型正確理解特定領域的信息,我們需要構建特定領域的數據集來微調嵌入模型。然而,微調嵌入模型不同于普通語言模型,主要在于所使用的數據集是不同的。在當前微調嵌入模型的主要方法,數據集used由三個部分組成,包括查詢、語料庫和相關文件。嵌入模型基于查詢在語料庫中查找相關文檔,然后確定查詢命中與否的相關文檔用作的度量模型。

       在數據集的構建中,對模型進行微調,以及評估,在每一個方面都可能出現許多挑戰三個組成部分。在LlamaIndex中,一個系列為嵌入模型的微調過程專門引入了關鍵類和函數的,大大簡化了這一過程。通過準備一個領域知識語料庫并利用它提供的方法,我們可以很容易地獲得專門針對我們所需領域的嵌入模型。

? ? ? ?下游任務的微調使嵌入模型適應下游任務同樣重要。當在下游任務中使用RAG時,一些工作通過使用LLM的功能對嵌入模型進行了微調。PROMPTAGATOR利用大型語言模型(LLM)作為少量查詢生成器,并基于生成的數據創建特定任務的檢索器,緩解了由于數據稀缺而在某些領域難以實現的監督微調問題。LLM Embedder使用大型語言模型為來自多個下游任務的數據輸出獎勵值,通過數據集的硬標記用兩個不同的監督信號微調檢索器,以及來自LLM的軟獎勵。

       這通過領域知識注入和下游任務微調在一定程度上改進了語義表示。然而,通過這種方法訓練的檢索器對大型語言模型沒有直觀的幫助,因此已經做了一些工作來直接通過來自的反饋信號來監督嵌入模型的微調LLM。(本節將在4.4中介紹)

4.2 如何匹配查詢的語義空間

       和文檔在RAG應用程序中,一些檢索器使用相同的嵌入模型對查詢和文檔進行編碼,而另一些檢索器則使用兩個模型,以便分別對查詢和文檔進行編碼。此外用戶的原始查詢可能存在表達不佳和缺乏語義信息的問題。因此,對齊用戶查詢和文檔的語義空間是非常必要的。本節介紹了實現這一目標的兩項關鍵技術。

查詢重寫

? ? ? 調整查詢和文檔語義的最直觀方法是重寫查詢。如Query2Doc和ITERRETGEN中所述利用大型語言模型引導生成偽文檔,然后將原始查詢與該偽文檔合并,形成新的查詢。在HyDE中,通過使用文本指示符來建立查詢向量,使用這些指示符來生成相關的“假設”文檔,但可能并不真正存在,它只需要捕獲相關的模式。RRR引入了一種新的框架,該框架顛倒了檢索和閱讀的順序,重點關注查詢重寫。該方法使用大型語言模型生成查詢,然后使用web搜索引擎檢索上下文,最后使用小型語言模型作為訓練重寫器來為凍結的大型語言模型提供服務。STEP-BACKPROPTING方法可以使大型語言模型進行抽象推理,提取高級概念和原理,并在此基礎上進行檢索。最后,多查詢檢索中的方法包括使用大型語言模型生成多個搜索查詢,這些查詢可以并行執行,檢索結果一起輸入,這對于依賴于多個子問題的單個問題非常有用

嵌入轉換

       如果存在像重寫查詢這樣的粗粒度方法,還應該有一個針對嵌入操作的細粒度實現。在LlamaIndex中,可以在查詢編碼器之后連接適配器,并微調適配器以優化查詢嵌入的表示,將其映射到更適合特定任務的潛在空間。當查詢和外部文檔的數據結構不同時,例如非結構化查詢和結構化外部文檔,使查詢與文檔對齊是非常重要的。SANTA提出了兩種預訓練方法,以使檢索者意識到結構化信息1)利用結構化數據和非結構化數據之間的自然對齊關系進行對比學習,進行結構化意識預訓練。2) 屏蔽實體預測,它設計了一個面向實體的掩碼策略并要求語言模型填充被屏蔽的實體。

4.3 如何調整檢索器的輸出和LLM的偏好

? ? ? 在RAG管道中,即使我們采用上述技術來提高檢索命中率,也可能無法提高RAG的最終效果,因為檢索到的文檔可能不是LLM所需要的。因此,本節介紹了兩種方法來調整檢索器的輸出和LLM的偏好。

LLM監督訓練

? ? ? 許多工作利用各種從大型語言模型到微調嵌入模型的反饋信號。AAR通過編碼器-編碼器架構LM為預先訓練的檢索器提供監督信號。通過確定LM的首選文檔通過FiD交叉注意力得分,檢索器然后使用硬負采樣和標準進行微調交叉熵損失。最終,經過微調的尋回器可以直接用于增強看不見的目標LM,從而在目標任務中表現得更好。尋回犬的訓練損失作為:

其中Da+是LLM在中首選的文件檢索到的集合和Da?不是優選的。我是標準十字架熵損失。最后,有人建議LLM可能具有更傾向于關注可讀性而非信息豐富的文檔。

? ? ? ? REPLUG使用檢索器和LLM來計算檢索到的文檔的概率分布,然后通過計算KL散度來執行監督訓練。這種簡單有效的訓練方法通過使用LM作為監督信號來增強檢索模型的性能,消除了對特定交叉注意力機制的需要。尋回器的訓練損失如下:

其中,D是一組輸入上下文,PR是檢索似然性,QLM是每個文檔的LM似然性。

      UPRISE也采用冷凍大語言模型來微調Prompt Retriever。但是語言模型和檢索器都采用“提示輸入”配對作為輸入,然后使用大語言模型給出的分數來監督檢索器的訓練,相當于使用大語言模式來標記數據集。Atlas提出了四種微調監督嵌入模型的方法,其中,注意力蒸餾使用語言模型在輸出過程中生成。EMDR2采用期望最大化算法以檢索到的文檔作為潛在變量進行訓練。困惑蒸餾直接使用模型生成的令牌的困惑作為指標進行訓練。LOOP基于文檔刪除對LM預測的影響,引入了一種新的損失函數,為更好地進行LM預測提供了一種有效的訓練策略使模型適應特定任務。

插入適配器:然而,由于使用API來實現嵌入功能或本地計算資源不足等因素,微調嵌入模型可能具有挑戰性。因此,有些作品選擇外部連接適配器以便對齊。PRCA訓練適配器通過上下文提取階段和獎勵驅動階段,并基于基于令牌的自回歸策略優化檢索器的輸出。令牌過濾方法計算交叉注意力得分,選擇得分最高的輸入令牌來有效過濾令牌。RECOM提出了抽取式和生成式壓縮器,通過選擇相關句子或合成文檔信息來生成摘要,實現多文檔查詢的焦點摘要。除此之外,一種新的方法PKG通過指令微調將知識注入白盒模型,并直接替換檢索器模塊,該模塊用于基于查詢直接輸出相關文檔。

五、生成器

       RAG的另一個核心部件是生成器,負責將檢索到的信息轉換為自然流暢的文本信息。受傳統的語言模型啟發,但與傳統的生成模型相比,RAG生成器通過利用檢索到的信息提高了準確性和相關性。在RAG中,生成器的輸入不僅包括傳統的上下文信息,同時也包括通過檢索器獲得的文本段。這允許生成器更好地理解問題背后的上下文,并產生信息更豐富的回答。此外,生成器通過檢索的文本可以引導以檢索到的文本和生成的內容之間的一致性。正是輸入數據的多樣性導致了生成階段的一系列有針對性的工作,所有這些工作都旨在使大型模型更好地適應查詢和文檔中的輸入數據。我們將從檢索后處理和微調等方面來深入研究生成器。

5.1 如何通過檢索后處理增強檢索結果?

       對不經過微調的大型語言模型而言,大多數研究都依賴于公認的大語言模型(如GPT4)其強大的內部知識來全面檢索文檔知識。然而,這些大型模型存在固有問題,比如上下文長度限制和對冗余信息的敏感。為了緩解這些問題,一些研究在檢索后處理方面做出了努力。檢索后處理是指對檢索器從大型文檔數據庫中檢索到的相關信息進行進一步處理、過濾或優化的過程。它的主要目的是提高檢索結果的質量,更好地滿足用戶的需求或用于下游任務。可以理解為對在檢索階段獲得的文檔進行再處理。檢索后處理的操作通常包括信息壓縮和結果重新存儲。

信息壓縮

       即使檢索器可以從在龐大的知識庫中獲取相關知識,我們仍然面臨著處理檢索文檔的大量信息。現有的一些研究嘗試通過增加大型語言模型的上下文長度來解決,但當前的大模型仍然面臨上下文長度的局限性。因此,在某些情況下,信息濃縮是必要的。簡而言之,信息的重要性濃縮主要體現在以下幾個方面:減少噪音,應對上下文長度限制,以及增強生成效果。

? ? ? ?PRCA通過訓練信息提取器來解決這個問題。在上下文提取階段,給定一個輸入文本???,它可以生成一個輸出序列??(它表示來自輸入文檔)。訓練的目標是盡量減少??和真實文本??差異。損失函數如下:

其中??是信息提取器,θ是提取器的參數。RECOM采用對比學習的方法訓練信息冷凝器。對于每個訓練數據點,存在一個正樣本以及五個陰性樣本。在此過程中,編碼器使用對比損失進行訓練。這個具體優化目標如下:

?其中??是訓練數據,??是正樣本,??是負樣本,sim(x,y)用于計算x和y之間的相似性。另一項研究選擇進一步精簡文檔數量,旨在通過減少檢索次數來提高模型答案的準確性。[Ma等人,2023b]提出了“Filter-Ranker”范式,它整合了大型語言的優勢模型(LLM)和小型語言模型(SLM)的優勢。在這個范式中,SLM充當過濾器,而LLM充當重新排序代理。通過促使LLM重新排列SLM識別的困難樣本的部分,研究結果表明,在各種信息提取(IE)任務中都有顯著改進。

重新排序

       重新排序模型的關鍵作用在于優化從檢索器檢索到的一組文檔。當添加額外的上下文時,LLM的性能會隨著回溯性能而下降,而重新排序提供了解決此問題的有效解決方案。核心理念是重新排列文檔,將最相關的文檔放在前面,從而減少文件到固定數量。這不僅解決了檢索時上下文擴展的問題也有助于提高檢索效率。

       引入上下文壓縮作為重新排序的一部分旨在僅基于給定的返回相關信息查詢上下文。這種方法的雙重意義在于通過減少單個文檔的內容和過濾整個文檔來提高檢索結果。因此,重新排序模型在整個信息檢索過程,提供更有效和用于后續LLM處理的準確輸入。

5.2 如何優化生成器以適應輸入數據?

       在RAG模型中,生成器的優化是架構中非常關鍵的組成部分。生成器的任務是以獲取檢索到的信息并生成相關文本,從而提供模型的最終輸出。生成器的優化目標是為了確保生成的文本既自然又有效地利用檢索到的文檔,以更好地滿足用戶的查詢需求。

? ? ? ?在典型的大型語言模型(LLM)生成任務中,輸入通常是一個查詢。在RAG中,主要區別在于輸入不僅包括查詢,還包括檢索器檢索的各種文檔(結構化/非結構化)。額外信息的引入可能會對模型的理解產生重大影響,尤其是對于較小的模型。在這種情況下,對模型進行微調以適應查詢+檢索到的文檔的輸入變得尤為重要。具體來說,在向微調模型提供輸入之前,通常會對檢索器檢索到的文檔進行檢索后處理。需要注意的是,RAG中微調生成器的方法基本上類似于LLM的一般微調方法。在這里,我們將簡要介紹一些具有代表性的工作,包括數據(格式化/未格式化)和優化功能。

一般優化過程

? ? ? ?訓練數據通常是(input, output)對,模型根據給定的輸入x生成輸出y。在Self-mem的工作中采用了相對經典的訓練過程,給定輸入x,檢索相關文檔z(選擇在本文中Top-1),在集成(x,z)后,模型生成輸出y。本文使用了兩種常見的范式用于微調,即Joint-EncoderDual-Encoder。對于Joint-Encoder,通常會采用一種encoder-decoder的標準模型,其中encoder對輸入進行編碼,decoder通過注意力機制以自回歸的方式生成token:

對于Dual-Encoder,需要兩個獨立的encoder,一個encoder負責對輸入(查詢,上下文)進行編碼,另一個encoder負責對文檔進行編碼。然后輸出依次由decoder進行雙向交叉關注處理。作者選擇使用Transformer作為兩種架構的構建塊,并優化?ξ?負對數似然(NLL)損失。

利用對比學習

? ? ? 在準備訓練數據的階段,通常生成是輸入和輸出之間的成對交互。在這種情況下,模型只能訪問一個唯一的可能引發“暴露偏差”問題的實際輸出:在訓練階段模型只暴露于單個真實反饋,而不訪問任何其他生成的令牌。這可能會損害模型在應用程序中的性能可能過高適合于訓練數據中的特定反饋,而不會有效地推廣到其他場景。因此,SURGE提出了圖文對比學習方法。對于輸入和輸出之間的任何一對給定的交互,這種對比的目的學習方法可以定義如下:

其中ζ、ξ是可學習的線性投影層。z是來自編碼器的圖的平均表示,h是平均值解碼器表示的。z’,h’表示相應的分別為陰性樣本。在給定的文本中,“h”和“z”表示負樣本。通過引入對比學習目標,模型可以學習生成多樣化的合理的回答更好,而不僅僅是在訓練數據。這有助于降低過度擬合的風險并提高了模型在現實世界中的泛化能力場景。

? ? ? 在處理結構化數據的檢索任務時,SANTA采用三階段訓練過程來充分理解結構和語義信息。具體來說,在檢索器的訓練階段采用對比學習來優化查詢和文檔的嵌入表示。具體的優化目標如下所示:

其中q和d是由編碼器。  ,  分別表示負樣本和正樣本。在生成器的初始訓練階段,我們利用對比學習來對齊結構化數據以及相應的非結構化文檔描述數據。優化目標如上所述。

? ? ? ?此外,在生成器的后期訓練階段,受參考文獻的啟發[Sciavolino等人,2021,張等人,2019],我們認識到實體語義在學習文本數據方面的顯著有效性檢索中的表示。因此,我們首先執行實體結構化數據中的標識,隨后應用生成器的輸入部分中實體的掩碼訓練數據,使生成器能夠預測這些掩碼。此后的優化目標是:

其中  表示序列  中的第j個token。  表示包含掩碼實體的ground truth序列。在整個訓練過程中,通過從上下文信息來恢復mask實體,去理解文本數據的結構語義,并對齊結構化數據中的相關實體。我們優化語言模型去填充隱藏的span,從而更好地理解實體的語義。

六、RAG的增強

? ? ? ?本節從以下三個維度:增強階段增強數據源增強過程,來詳細闡述了RAG開發中的關鍵技術。RAG核心分類組件如圖4所示。

6.1 增強階段的RAG

       作為一項知識密集型任務,RAG在語言模型的預訓練、微調和推理階段采用了不同的技術方法。

6.1.1 預訓練階段

       自從預訓練模型出現以來,研究人員深入研究了提高預訓練語言模型(PTM)在開放域問答中的性能(QA)通過預訓練階段的檢索方法。在預訓練中認識和擴展隱性知識模型可能具有挑戰性。REALM引入了一種更模塊化和可解釋的知識嵌入方法。遵循掩蔽語言模型(MLM)范式,REALM模型包括預訓練和作為檢索后預測的過程進行微調,其中語言模型通過預測基于y的掩蔽標記進行預訓練在掩蔽句x上建模P(x|y)。

       RETRO利用檢索增強對自回歸語言模型進行預訓練,通過從大量標記數據中檢索并顯著減少模型參數,實現從頭開始的大規模預訓練。RETRO與GPT模型共享主干結構,并引入了一個額外的RETRO編碼器來對檢索到的相鄰實體的特征進行編碼來自外部知識庫。此外,RETRO在其解碼器轉換器結構中結合了逐塊交叉注意層,以有效地集成來自RETRO編碼器的檢索信息。RETRO實現了比標準GPT模型更低的困惑。此外,它還提供了更新語言中存儲的知識的靈活性無需更新檢索數據庫即可建立模型用于重新訓練語言模型。

       Atla采用了類似的方法,在預訓練和微調階段都采用了使用T5架構的檢索機制。在預訓練之前,它用預訓練的T5初始化編碼器-解碼器LM主干,并用預訓練過的Contriever初始化密集檢索器。在預訓練過程中,它每1000步刷新一次異步索引。

       COG是一種文本生成模型,通過從現有的文本集合中逐步復制文本片段(如單詞或短語)來形式化其生成過程。與按順序選擇單詞的傳統文本生成模型不同,COG利用高效的矢量搜索工具來計算文本片段的有意義的上下文表示并對其進行索引。因此,文本生成任務被分解為一系列復制和粘貼操作,其中在每個時間步長,從文本集合中尋找相關的文本片段,而不是從獨立的詞匯中進行選擇。COG在各個方面都表現出優于RETRO的性能,包括問題回答、領域自適應和擴展短語索引。

       另一方面,隨著 scaling law定律的發現,模型參數迅速增加,使自回歸模型成為主流。研究人員還在探索是否可以使用RAG方法對更大的模型進行預訓練。RETRO++是RETRO的擴展,增加了模型的參數規模。研究發現,在文本生成質量、事實準確性、低毒性和下游方面都有持續的改進任務準確性,尤其是在知識密集型任務中作為開放域問答。這些研究發現強調預訓練自回歸語言模型與未來檢索相結合的有前景的方向基礎模型。

      總之,強化預訓練的優勢和局限性是顯而易見的。從積極的方面來看,這種方法提供了一個更強大的基礎模型,在困惑、文本生成質量和下游任務性能方面優于標準GPT模型。此外,與純預訓練模型。它特別擅長處理知識密集型任務,允許通過對特定領域語料庫的訓練來創建特定領域的模型。然而,也存在缺點,包括需要大量的預訓練數據和更大的訓練資源,以及更新速度較慢的問題。特別是隨著模型大小的增加,檢索增強訓練的成本變得相對較高。盡管存在這些限制,這種方法在以下方面表現出顯著的特點模型穩健性。經過訓練后,檢索增強型模型基于純預訓練消除了對外部庫依賴性的需求,提高了生成速度和操作效率。

6.1.2 微調階段

       在下游微調階段,研究人員采用了各種方法來微調檢索器和生成器,以改進信息檢索,主要是在開放域問答任務中。關于檢索器微調,REPlUG將語言模型(LM)視為黑匣子,并通過可調整的檢索模型對其進行增強。REPLUG通過監督信號從黑匣子語言模型中獲得反饋,改進了初始檢索模型。另一方面,UPRISE通過對不同任務集進行微調,創建一個輕量級和通用的檢索器,從而對檢索器進行微調。該檢索器可以自動為零樣本任務提供檢索提示,展示其在任務和模型中的通用性和改進的性能。

      同時,微調生成器的方法包括Self-Mem,其通過示例的存儲池來微調生成器,以及Self-RAG,其通過生成反射令牌來滿足主動檢索需求。RADIT方法通過在給定檢索增強指令的情況下最大化正確答案的概率來微調生成器和檢索器。它更新生成器和檢索器,以最大限度地減少文檔和查詢之間的語義相似性,有效地利用相關的背景知識。

      此外,SUGRE引入了對比學習的概念。它對檢索器和生成器進行端到端的微調,確保高度詳細的文本生成和檢索的子圖。SURGE使用基于圖神經網絡(GNN)的上下文感知子圖檢索器,從與正在進行的對話相對應的知識圖中提取相關知識。這樣可以確保生成的響應忠實地反映檢索到的知識。為此,SURGE采用了一種不變但高效的圖編碼器和圖-文本對比學習目標。

       總之,在微調階段的增強方法表現出幾個特點。首先,微調LLM和檢索器可以更好地適應特定任務,提供同時微調其中一個或兩個的靈活性,如以下方法所示RePlug和RA-DIT。其次,這種微調的好處擴展到適應不同的下游任務,如UPRISE所示,使模型更加通用。此外,微調使模型能夠更好地適應各種語料庫中的不同數據結構,特別有利于圖結構語料庫,如SUGRE方法所強調的那樣。

       然而,這一階段的微調也有局限性,例如需要專門為RAG微調準備的數據集,以及與推理階段的RAG相比需要大量的計算資源。總的來說,在微調過程中,研究人員可以根據特定的要求和數據格式靈活地定制模型,與之相比減少了資源消耗進入訓練前階段,同時保持調整能力模型的輸出樣式。

6.1.3 推理階段

       將RAG方法與LLM相結合已成為推理階段的一個流行研究方向。值得注意的是,Naive RAG的研究范式依賴于在推理階段結合檢索內容。

? ? ? ?為了克服Naive RAG的局限性,研究人員在推理階段在RAG中引入了更豐富的上下文。DSP框架依賴于一個復雜的管道,該管道涉及在凍結的語言模型(LM)和檢索模型(RM)之間傳遞自然語言文本,為模型提供更多信息上下文以提高生成質量。PKG為LLM配備了一個知識引導模塊,該模塊允許在不改變LLM參數的情況下訪問相關知識,使模型能夠執行更復雜的任務。此外,CREA-ICL利用跨語言知識的同步檢索來幫助獲取額外信息,而RECITE通過從LLM中采樣一個或多個段落來形成上下文。

      在推理階段,優化RAG過程有利于適應更具挑戰性的任務。例如,ITRG通過迭代檢索和搜索正確的推理路徑,增強了對需要多步推理的任務的適應性。ITERRETGEN采用迭代方法將檢索和生成結合起來,實現了“檢索增強生成”和“生成增強檢索”的交替過程

      另一方面,IRCOT融合了RAG和CoT的概念,采用了交替的CoT引導檢索,并使用檢索結果來改進CoT。這種方法顯著提高了GPT-3在各種QA任務中的性能,突出了集成檢索和生成的潛在優勢。

? ? ? ?總之,推理階段增強方法具有重量輕、成本效益高、不需要額外訓練以及利用強大的預訓練模型的優點。主要優勢在于在微調過程中凍結LLM的參數,專注于提供更適合需求的上下文,具有快速和低成本的特點。然而,這種方法也有一些局限性,包括需要額外的數據處理和流程優化,同時受到基礎模型能力的限制。通常,這種方法通常與過程優化技術相結合,如逐步推理、迭代推理和自適應檢索,以更好地滿足不同任務的要求。

6.2 增強數據源

? ? ? ?數據來源是RAG有效性的關鍵因素。各種數據源提供了不同的知識粒度和維度,需要不同的處理方法。它們主要分為三類:非結構化數據結構化數據LLM生成的內容

用非結構化數據擴充

       非結構化數據主要包括文本數據,通常源自純文本語料庫。此外,其他文本數據可以作為檢索源,例如用于大型模型微調的提示數據和跨語言數據。

       就文本粒度而言,除了常見的組塊(包括句子)之外,檢索單元可以是標記(例如,kNN-LM)、短語(例如,NPM、COG)和文檔段落。細粒度的檢索單元通常可以更好地處理罕見模式和域外場景,但會增加檢索成本

       在單詞級別,FLARE采用主動檢索策略,僅當LM生成低概率單詞時才進行檢索。該方法包括生成一個臨時的下一句,用于檢索相關文檔,然后在檢索到的文檔的條件下重新生成下一個句子以預測隨后的句子。

       在組塊級別,RETRO使用前一個組塊來檢索最近的相鄰組塊,并將此信息與前一組塊的上下文信息集成以指導下一塊的生成。RETRO實現這是通過檢索最近的相鄰塊  從檢索數據庫中,然后融合前面的塊 ,, 和通過交叉注意檢索  的信息引導生成下一個塊  為了保持因果關系,第i個塊  的自回歸生成只能使用前一個塊  的最近鄰居,并且而不是  。

用結構化數據增強

       像知識圖譜(KG)這樣的結構化數據源逐漸被整合到RAG的范式中。經過驗證的KGs可以提供更高質量的上下文,降低模型幻覺的可能性。

        RET-LLM通過從過去的對話中提取關系三元組來構建個性化的知識圖記憶,以供將來使用。SUGRE使用圖神經網絡(GNN)嵌入從知識圖中檢索的相關子圖,以防止模型生成與上下文無關的回復。SUGRE采用了一種圖編碼方法,該方法將圖結構反映到PTM的表示空間中,并利用圖文本模式之間的多模式對比學習目標來確保檢索到的事實和生成的文本之間的一致性。KnowledgeGPT以代碼格式生成知識庫(KB)的搜索查詢,并包括預定義的KB操作函數。除了檢索,KnowledgeGPT還提供了將知識存儲在個性化知識庫中以滿足個人用戶需求的功能。這些結構化數據源為RAG提供了更豐富的知識和上下文,有助于提高模型性能。

LLM生成的內容RAG

? ? ? ?觀察到RAG回憶的輔助信息并不總是有效的,甚至可能產生負面影響,一些研究通過深入研究LLM的內部知識來擴展RAG的范式。這種方法利用LLM本身生成的內容進行檢索,旨在提高下游任務的性能。以下概述了這一類別中值得注意的研究:

       SKR采用了一個標記的訓練集,將模型可以直接回答的問題歸類為已知問題,將需要增強檢索功能的問題分類為未知問題。該模型被訓練來辨別一個問題是否已知,只對被識別為未知的輸入應用檢索增強,同時直接回答其余的輸入。

? ? ? GenRead用LLM生成器代替檢索器。實驗結果表明,生成的上下文文檔包含正確答案的情況比Naive RAG檢索到的情況更普遍。生成的答案也顯示出卓越的質量。作者將此歸因于生成文檔級上下文的任務與培訓前目標之間的一致性因果語言建模,允許更好地利用存儲在模型參數中的世界知識。

      Selfmem迭代使用檢索增強生成器來創建無邊界內存池。內存選擇器用于選擇一個輸出作為下一代的內存。此輸出充當原始問題的雙重問題。通過將原始問題和雙重問題相結合,檢索增強生成模型可以利用其自身的輸出來增強自身。

      這些不同的方法展示了RAG檢索增強的創新策略,旨在提高模型的性能和有效性。

6.3 增強過程

      大多數RAG研究通常只執行單個檢索和生成過程。然而,單次檢索可能包含冗余信息,導致“中間丟失”現象。這種冗余信息可能會模糊關鍵信息或包含與真實答案相反的信息,對生成效果產生負面影響。此外,從單個檢索中獲得的信息在需要多步驟推理。

       目前主要優化檢索過程的方法包括迭代檢索和自適應檢索。這些允許在檢索過程中多次迭代的模型或者自適應地調整檢索過程以更好地適應不同的任務和場景。

迭代檢索

      基于原始查詢和生成的文本定期收集文檔可以為LLM提供額外的材料。在多次迭代檢索中提供額外的參考提高了后續答案生成的穩健性。然而,這種方法可能在語義上不連續,并可能導致收集有噪聲和無用的信息,因為它主要依賴于n個令牌的序列將生成的文檔和檢索到的文檔分開。

       遞歸檢索和多跳檢索用于特定的數據場景。遞歸檢索可以首先通過結構化索引處理數據,然后逐級檢索。當檢索層次豐富的文檔時,可以為整個文檔或長PDF中的每個部分進行摘要。然后基于該摘要執行檢索。在確定文檔后,對內部塊進行第二次檢索,從而實現遞歸檢索。多跳檢索通常用于進一步挖掘圖結構數據源中的信息。

       有些方法會迭代檢索和生成的步驟。ITER-RETGEN協作利用“檢索增強型生成”和“生成增強型檢索”來完成需要復制信息的任務。也就是說,該模型使用完成任務所需的內容來響應輸入任務,并且這些目標內容充當檢索更相關的信息上下文知識這有助于在另一個中產生更好的響應迭代。

       IRCoT還探索了為每個生成的句子檢索文檔,在思想鏈的每一步引入檢索。它使用CoT來指導檢索,并使用檢索結果來改進CoT,確保語義的完整性。

自適應檢索

? ? ? ?事實上,前兩節中描述的RAG方法遵循被動方法,其中檢索是優先的。這種方法涉及查詢相關文檔并根據上下文輸入LLM,可能會導致效率問題。自適應檢索方法,如正如Flare和Self-RAG所介紹的那樣,優化了RAG檢索過程,使LLM能夠主動判斷檢索的時間和內容。這有助于提高檢索信息的效率和相關性。

? ? ? ?事實上,LLM積極使用工具和做出判斷的方式并不是源于RAG,而是已廣泛應用于大型模型的代理中。Graph Toolformer的檢索步驟大致如下進入:LLM積極使用檢索器、Self Ask和DSP嘗試使用少量提示來觸發LLM搜索查詢。當LLM認為有必要時,他們可以決定搜索相關查詢以收集必要的材料,類似于代理的工具調用。

? ? ? ?WebGPT采用強化學習框架來自動訓練GPT-3模型,以使用搜索引擎生成文本。它使用特殊的令牌來執行操作,包括在搜索引擎上查詢、滾動排名和引用引用。這允許GPT-3利用搜索引擎生成文本

? ? ? ?另一方面,Flare自動化了檢索的時間安排,并根據生成文本的概率解決了定期文檔檢索的成本問題。它使用概率作為LLM在生成過程中的置信度指標。當一個術語的概率低于預定義的閾值時,信息檢索系統將檢索參考文獻并刪除具有較低概率的術語概率。這種方法旨在處理LLM可能需要額外知識的情況。

? ? ? ?Self-RAG引入了一種名為反射代幣的重要創新。生成這些特殊標記是為了查看輸出,有兩種類型:Retrieve和Critic。該模型可以自主決定何時檢索段落或使用設置的閾值來觸發檢索。當需要檢索時,生成器處理同時對多個段落進行分段級波束搜索,得到最佳序列。每個細分的分數都使用Critic分數進行更新,并且可以在推理過程中調整這些權重,以自定義模型的行為。Self-RAG框架還允許LLM自主確定是否需要召回,避免訓練額外的分類器或依賴NLI模型。這增強了模型自主判斷輸入并生成準確答案的能力。

七、RAG評估

       在探索RAG的開發和優化過程中,有效評估其性能已成為一個核心問題本章主要討論了評估方法、RAG的關鍵指標、它應該具備的能力,以及一些主流評價框架。

7.1 評價方法

評估RAG有效性主要有兩種方法:獨立評估端到端評估

獨立評估

獨立評估包括評估檢索模塊和生成(讀取/合成)模塊。

1.檢索模塊

       一套衡量系統(如搜索引擎、推薦系統或信息檢索系統)根據查詢或任務對項目進行排名的有效性的指標通常用于評估RAG檢索模塊的性能。示例包括命中率、MRR、NDCG、精度等。

2.生成模塊

       這里的生成模塊是指通過將檢索到的文檔補充到查詢中而形成的增強或合成輸入,與通常評估的最終答案/響應生成不同端到端。生成模塊的評估指標主要集中在上下文相關性上,測量檢索到的文檔與查詢問題的相關性。

端到端評估

? ? ? ?端到端評估評估RAG模型對給定輸入生成的最終響應,包括模型生成的答案與輸入查詢的相關性和一致性。從內容生成目標的角度來看,評估可以分為未標記的以及標記的內容。未標記內容評估指標包括答案保真度、答案相關性、無害性等,而標記內容評估標準包括準確性和EM。此外,從評估方法的角度來看,端到端評估可以分為手動評估和使用LLM的自動評估。以上總結了RAG端到端評估的一般情況。此外,基于RAG在特定領域的應用,采用了特定的評估指標,例如用于問答任務的EM,UniEval和用于摘要任務的E-F1,以及用于機器翻譯的BLEU。這些指標有助于理解RAG在各種特定應用場景中的性能。

7.2 關鍵指標和能力

? ? ? ?現有的研究往往缺乏對檢索增強生成對不同LLM的影響的嚴格評估。在大多數情況下,評估RAG在各種下游任務和不同檢索器中的應用可能會產生不同的結果。然而,一些學術和工程實踐側重于RAG的一般評估指標及其有效使用所需的能力。本節主要介紹了評估RAG有效性的關鍵指標和評估其性能的基本能力。

主要績效指標

? ? ? ?最近的OpenAI報告提到了優化大型語言模型(LLM)的各種技術,包括RAG及其評估指標。此外,最新的評估框架,如RAGAS和ARES也涉及RAG評估指標。總結這些工作,主要關注三個核心指標:答案的真實性、答案相關性和上下文相關性。

1.誠信

       該指標強調,模型生成的答案必須與給定的上下文保持一致,確保答案與上下文信息一致,不會偏離或矛盾。評估的這一方面對于解決大型模型中的幻覺至關重要。

2.答案相關性

這個指標強調生成的答案需要與提出的問題直接相關。

3.語境相關性

? ? ? 該度量要求檢索到的上下文信息盡可能準確和有針對性,避免不相關的內容。畢竟,處理長文本對LLM來說代價高昂,過多的無關信息會降低LLM利用上下文的效率。OpenAI報告還提到“上下文回憶”作為一個補充指標,衡量模型檢索回答問題所需的所有相關信息的能力。該度量反映了RAG檢索模塊的搜索優化水平。低召回率表明潛在地需要優化搜索功能,例如引入重新排序機制或微調嵌入,以確保更相關的內容檢索。

關鍵能力

       RGB的工作從RAG所需的四個基本能力方面分析了不同大型語言模型的性能,包括噪聲魯棒性、負抑制、信息集成和反事實魯棒性,為檢索增強生成建立了基準。RGB主要關注以下四個方面能力:

1.噪聲魯棒性

       這種能力衡量模型處理有噪聲文檔的效率,這些文檔與問題有關,但不包含有用的信息。

2.否定拒絕

? ? ? 當模型檢索到的文檔缺乏回答問題所需的知識時,模型應該正確地拒絕響應。在陰性拒絕的測試設置中,外部文件僅包含噪音。理想情況下,LLM應該發出“缺乏信息”或類似的拒絕信號。

3.信息集成

      這種能力評估模型是否可以集成來自多個文檔的信息來回答更復雜的問題。

4.反事實穩健性

       該測試旨在評估當收到關于檢索信息中潛在風險的指令時,模型是否能夠識別和處理文檔中的已知錯誤信息。反事實穩健性測試包括LLM可以直接回答的問題,但相關的外部文件包含事實錯誤。

7.3 評估框架

? ? ? 最近,LLM社區一直在探索使用“LLM作為判斷”進行自動評估,許多LLM使用強大的LLM(如GPT-4)來評估自己的LLM應用程序輸出。Databricks使用GPT-3.5和GPT-4作為LLM法官來評估其聊天機器人應用程序的實踐表明,使用LLM作為自動評估工具是有效的。他們相信這種方法還可以高效且經濟高效地評估基于RAG的應用程序。

? ? ? ?在RAG評估框架領域,RAGAS和ARES是相對較新的。這些評估的核心重點是三個主要指標:答案的真實性、答案相關性和上下文相關性。此外,業界提出的開源庫TruLens也提供了類似的評估模式。這些框架都使用LLM作為評委進行評估。由于TruLens類似于RAGAS,因此第章將具體介紹RAGAS和ARES。

RAGAS

? ? ? ?該框架考慮了檢索系統識別相關和關鍵上下文段落的能力、LLM忠實使用這些段落的能力以及生成本身的質量。RAGAS是一個基于簡單手寫提示的評估框架,使用這些提示以完全自動化的方式衡量質量的三個方面——答案忠實性、答案相關性和上下文相關性。在實施和實驗中在這個框架中,所有提示都使用gpt3.5-turbo-16k模型進行評估,該模型可通過OpenAI獲得API

算法原理

1.評估答案的可信度:使用LLM將答案分解為各個陳述,并驗證每個陳述是否與上下文一致。最終,通過將支持的陳述數量與總數進行比較來計算“可信度分數”語句數。

2.評估答案相關性:使用LLM生成潛在問題,并計算這些問題與原始問題之間的相似性。答案相關性得分是通過計算所有生成問題與原始問題的平均相似性得出的。

3.評估上下文相關性:使用LLM提取與問題直接相關的句子,并使用這些句子與上下文中句子總數的比率作為上下文相關性得分。

ARES

        ARES旨在從三個方面自動評估RAG系統的性能:上下文相關性、答案可信度和答案相關性。這些評估指標與RAGAS中的指標相似。然而,RAGAS作為一種基于簡單手寫提示的較新評估框架,對新的RAG評估設置的適應性有限,這也是ARES工作的意義之一。此外,如其評估所示,ARES的表現明顯低于RAGAS。

       ARES通過使用少量手動注釋數據和合成數據降低了評估成本,并利用預測驅動推理(PDR)提供統計置信區間,提高了評估的準確性。

算法原理

1.生成合成數據集:ARES最初使用語言模型從目標語料庫中的文檔中生成合成問答,以創建正樣本和負樣本。

2.準備LLM評委:接下來,ARES使用合成數據集對輕量級語言模型進行微調,以訓練它們評估上下文相關性、答案可信度和答案相關性。

3.使用置信區間對RAG系統進行排名:最后,ARES將這些判斷模型應用于RAG系統評分,并使用PPI方法將其與手動注釋的驗證集相結合,以生成置信區間,從而可靠地估計RAG系統。

八、未來前景

       在本章中,我們深入探討了RAG的三個未來前景,即RAG的縱向優化、橫向擴展和生態系統。

8.1 RAG的垂直優化

       盡管RAG技術在過去一年中取得了快速進步,但其垂直領域仍有幾個領域需要進一步研究。

? ? ? 首先,RAG中的長上下文問題是一個重大挑戰。如文獻[Xu et al.,2023c]所述,RAG的生成階段受到LLM的上下文窗口的約束。如果窗口太短,則可能無法包含足夠的相關信息;如果時間過長,可能會導致信息丟失。目前,擴展LLM的上下文窗口,甚至到無限上下文的程度,是LLM發展的一個關鍵方向。然而,一旦上下文窗口約束被移除,RAG應該如何適應仍然是一個值得注意的問題。

       其次,RAG的魯棒性是另一個重要的研究熱點。如果在檢索過程中出現不相關的噪聲,或者檢索到的內容與事實相矛盾,則會顯著影響RAG的有效性。這種情況被比喻為“向毒蘑菇開書”。因此,增強RAG的穩健性越來越受到研究人員的關注,如[Yu等人,2023a,Glass等人,2021,Baek等人,2023]等研究所示。

       第三,RAG和微調的協同問題也是一個主要的研究點。混合已逐漸成為RAG的主流方法之一,以RADIT為例。如何協調兩者之間的關系,同時獲得參數化和非參數化的優勢,是一個需要解決的問題。

? ? ? ?最后,RAG的工程實踐是一個值得關注的重要領域。易于實施和符合公司工程需求是RAG崛起的原因之一。然而,在工程實踐中,如何在大規模知識庫場景中提高檢索效率和文檔召回率,以及如何確保企業數據安全,例如防止LLM被誘導披露文檔的來源、元數據或其他信息,這些問題都是需要解決的關鍵問題。

RAG的水平擴展

      關于RAG的研究在水平領域迅速擴展。從最初的文本問答領域開始,RAG的思想逐漸應用于更多的模態數據,如圖像、代碼、結構化知識、音頻和視頻等。這方面的工作已經很多了。

       在圖像領域,BLIP2的提出,使用凍結圖像編碼器和大規模語言模型進行視覺語言預訓練,降低了模型訓練的成本。此外,該模型可以生成圖像到文本的轉換來自零個樣本。在文本生成領域,VBR方法用于生成圖像,以指導語言模型的文本生成,在開放文本生成任務中具有顯著效果。

       在代碼領域,RBPS用于與代碼相關的小規模學習。通過編碼或頻率分析,可以自動檢索到與開發人員任務類似的代碼示例。該技術已在測試斷言生成和程序修復任務中證明了其有效性。在結構化知識領域,方法包括CoK提示首先從知識圖中檢索與輸入問題相關的事實,然后以提示的形式將這些事實添加到輸入中。該方法在知識圖問答任務中表現良好。

       對于音頻和視頻領域,GSS方法從口語詞匯庫中檢索并連接音頻片段,立即將MT數據轉換為ST數據。UEOP在端到端自動化方面取得新突破通過引入用于語音到文本映射的外部離線策略進行語音識別。通過基于KNN的注意力融合,文本到語音方法生成的音頻嵌入和語義文本嵌入可以使ASR產生偏差,有效縮短領域自適應時間。這個Vid2Seq架構通過引入特殊的時間標記來增強語言模型,使其能夠無縫預測同一輸出序列中的事件邊界和文本描述。

8.2 RAG的生態系統

下游任務和評估

       通過整合廣泛知識庫中的相關信息,RAG在增強語言模型處理復雜查詢和生成信息豐富的響應的能力方面表現出了巨大的潛力。大量研究表明,RAG在各種下游任務中表現良好,如開放式問答和事實驗證。RAG模型不僅提高了下游應用中信息的準確性和相關性,還增加了響應的多樣性和深度。

       鑒于RAG的成功,探索該模型在多領域應用中的適應性和通用性將是未來工作的一部分。這包括它在專業領域知識問答中的應用,如醫學、法律和教育。在專業領域知識問答等下游任務的應用中,RAG可以提供更低的培訓成本和更好的性能好處比微調。

       同時,改進RAG的評估系統,以評估和優化其在不同下游任務中的應用,對于該模型在特定任務中的效率和效益至關重要。這包括為不同的下游任務開發更準確的評估指標和框架,如上下文相關性、內容創造力和無害性等。

       此外,通過RAG增強模型的可解釋性,讓用戶更好地了解模型如何以及為什么做出特定響應,也是一項有意義的任務。

技術堆棧

? ? ? ?在RAG的生態系統中,相關技術堆棧的開發起到了推動作用。例如,隨著ChatGPT的普及,LangChain和LLamaIndex迅速廣為人知。它們都提供了一套豐富的RAG相關API,逐漸成為大模型時代不可或缺的技術。與此同時,新型技術堆棧正在不斷開發。盡管它們提供的功能不如LangChain和LLamaIndex那么多,但它們更多地關注自己的獨特特性。例如,Flowise AI6強調低代碼,允許用戶實現以RAG為代表的各種AI應用程序,而無需編寫代碼,只需拖放即可。其他新興技術包括HayStack、Meltno和Cohere Coral。

       除了AI原生框架,傳統軟件或云服務提供商也擴大了服務范圍。例如,Verb7,由矢量數據庫公司Weaviate提供,專注于個人助理。亞馬遜為用戶提供了基于RAG思想的智能企業搜索服務工具Kendra。用戶可以通過內置連接器在不同的內容存儲庫中進行搜索。

       技術堆棧和RAG的發展是相輔相成的。新技術對現有技術棧提出了更高的要求,而技術棧功能的優化進一步推動了RAG技術的發展。總體而言,RAG工具鏈的技術堆棧已初步形成,許多企業級應用程序已逐漸出現,但一體化平臺仍需完善。

九、結論

? ? ? ?本文深入探討了檢索增強生成(RAG),這是一種使用外部知識庫來補充大型語言模型(LLM)的上下文并生成響應的技術。值得注意的是,RAG結合了LLM的參數化知識和非參數化外部知識,緩解了幻覺問題,通過檢索技術及時識別信息,并提高了響應的準確性。此外,通過引用來源,RAG提高了模型輸出的透明度和用戶信任度。RAG還可以通過索引相關文本語料庫來基于特定領域進行定制。RAG的發展和特點概括為三種范式:Naive RAG、Advanced RAG和Modular RAG,每種范式都有其模型、方法和缺點。Naive RAG主要涉及“檢索-閱讀”過程。高級RAG使用更多細化數據處理,優化知識庫索引,并引入多次或迭代檢索。隨著探索的深入,RAG集成了微調等其他技術,導致了模塊化RAG范式的出現,它用新的模塊豐富了RAG過程,并提供了更多的靈活性。

       在接下來的章節中,我們將進一步詳細分析RAG的三個關鍵部分。第4章介紹了RAG的檢索器,如何處理語料庫以獲得更好的語義表示,如何縮小查詢和文檔之間的語義差距,以及如何調整檢索器以適應生成器。第5章解釋了生成器如何通過對檢索到的文檔進行后處理來獲得更好的生成結果,避免“中間丟失”問題,以及調整生成器以適應檢索器的方法。隨后,在第六章中,我們從檢索階段、檢索數據來源和檢索過程等方面回顧了當前的檢索增強方法。

       第7章解釋了如何評估當前的RAG方法,包括評估、關鍵指標和當前的評估框架。最后,我們對RAG未來的潛在研究方向進行了展望。RAG作為一種將檢索和生成相結合的方法,在未來的研究中有許多潛在的發展方向。通過不斷改進技術并擴大其應用,RAG的性能和實用性可以進一步提高。

參考文獻:

[1]?https://arxiv.org/pdf/2312.10997.pdf

本文章轉載微信公眾號@ArronAI

上一篇:

LLM之RAG理論(一)| CoN:騰訊提出筆記鏈(CHAIN-OF-NOTE)來提高檢索增強模型(RAG)的透明度

下一篇:

LLM之RAG理論(三)| 高級RAG技術全面匯總
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

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

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

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

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

#AI深度推理大模型API

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

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