一文看懂RAG的各種套路 | 綜述:當RAG遇到大語言模型 精華
背景
圖片
檢索技術(shù)是指解析查詢,并從外部數(shù)據(jù)源中獲取有關(guān)信息,在搜索、問答、推薦系統(tǒng)等多個領(lǐng)域得到廣泛運用。比如谷歌、Bing、baidu都是檢索技術(shù)成功應用的典型代表,這些搜索引擎可以精準篩選并提供與用戶查詢相匹配的網(wǎng)頁和文檔,大大提升了信息檢索的效率。用過維護外部數(shù)據(jù)庫中的數(shù)據(jù),檢索模型可以獲得最新、準確的知識。
在AIGC時代,檢索基于與生成式模型結(jié)合,催生了RAG(檢索增強生成技術(shù)),這一技術(shù)對提升文本內(nèi)容的生成質(zhì)量發(fā)揮著重要作用。
RAG通過整合外部數(shù)據(jù)源的信息或知識,為輸入查詢或生成輸出提供補充,從而提升生成模型的性能。首先利用檢索器從外部數(shù)據(jù)庫中提取相關(guān)文檔,這些文檔隨后作為上下文來增強生成過程。RAG技術(shù)在各種生成任務中應用廣泛,且易于適配,幾乎無需額外訓練。RAG在開放域問答(OpenQA)等知識密集型任務以及通用語言任務和多種下游應用中都展現(xiàn)出巨大潛力。
大型語言模型(LLM)作為預訓練基礎(chǔ)模型的代表,已在推薦系統(tǒng)、分子發(fā)現(xiàn)和報告生成等多個任務中展現(xiàn)出卓越性能。LLM的成功得益于其先進的架構(gòu)和在海量多源數(shù)據(jù)上的十億級參數(shù)預訓練,使其在語言理解和生成、上下文學習等方面具有顯著的涌現(xiàn)能力。然而,LLM也面臨一些挑戰(zhàn),如缺乏特定領(lǐng)域知識、易產(chǎn)生幻覺以及更新模型所需的巨大計算資源。特別是在醫(yī)學和法律等專業(yè)領(lǐng)域,這些問題尤為突出。近期研究顯示,即使是最先進的LLM,在特定法律查詢中也普遍存在幻覺現(xiàn)象,幻覺率高達69%至88%。此外,解決幻覺問題所需的大量計算資源,進一步限制了LLM在現(xiàn)實世界應用中的普及。
為了解決或者緩解大語言模型的局限性,近期有研究開始探索利用檢索增強生成技術(shù)來提升大語言模型在多項任務中的表現(xiàn),尤其是那些需要最新技術(shù)、可靠知識有很高要求的領(lǐng)域。
本篇綜述的目的是全面梳理RAG技術(shù),在架構(gòu)、訓練、應用方面進行總結(jié)。
檢索技術(shù)
圖片
當接收到LLM的查詢輸入時,RAG框架中的檢索環(huán)節(jié)旨在從外部知識庫中提取相關(guān)信息,這些知識庫可能是公開的或私有的,如上圖所示。
圖片
如上圖,核心組件檢索器是由多個步驟組成,協(xié)同工作,以確保信息檢索的準確性。檢索的具體操作流程,還包括預檢索和后檢索等步驟。后面的內(nèi)容里會逐一介紹主要的檢索技術(shù)細節(jié),包括:檢索器類型、檢索粒度、預后檢索增強、數(shù)據(jù)庫技術(shù)等。
檢索器類型
檢索方法大致分為兩大類:基于詞的稀疏檢索和將查詢和外部知識嵌入向量空間的密集檢索。其中,稀疏檢索主要用于文本檢索,而密集檢索則適用于多種數(shù)據(jù)格式。
稀疏檢索
如TF-IDF和BM25,是一種簡單直接的方法,通常依賴于倒排索引匹配和原始數(shù)據(jù)輸入。例如,許多研究直接采用BM25進行段落級別的檢索,以支持其RAG系統(tǒng),用詞的集合來表示段落,并根據(jù)詞頻和逆文檔頻率進行排序。除了輔助生成器輸入外,稀疏檢索也被用于尋找上下文學習示例。
在RAG中應用稀疏檢索的主要局限在于其非訓練性質(zhì),這導致檢索性能在很大程度上依賴于知識庫的構(gòu)建質(zhì)量和查詢生成的效果。此外,這種固定術(shù)語的方法僅支持相似性檢索,并不能適應LLM應用中所需的其他類型的檢索,如多樣性。
密集檢索
與稀疏檢索不同,密集檢索將查詢和文檔根據(jù)特定標準嵌入到連續(xù)向量空間,例如語義相似性。由于可以進行訓練,密集檢索方法在適應性上展現(xiàn)出更大的靈活性和潛力。在現(xiàn)有的RAG模型中,作為密集檢索器核心的嵌入模型。
一種簡潔的設(shè)計方法是直接利用生成模型的一部分作為檢索器的嵌入層,這有助于加強檢索與生成過程的一致性。
另外基于Bert的一些模型,也在檢索模型中得到廣泛運用。常見的一種檢索器設(shè)計是構(gòu)建雙流編碼器(一個用于處理查詢,另一個用于處理文檔),這種方法也被稱作雙編碼器。早期的RAG方法往往會凍結(jié)或部分凍結(jié)[69]檢索器的參數(shù),以便執(zhí)行基礎(chǔ)級別的相關(guān)知識提取,同時更加注重知識的利用和生成器的微調(diào)。大規(guī)模的專門預訓練進一步提升了RAG模型在知識密集型任務上的表現(xiàn)。一個典型的例子是Dense Passage Retriever(DPR),它基于BERT構(gòu)建,專門為OpenQA任務預訓練,使用問題-答案對數(shù)據(jù)。
通過有效的微調(diào),雙編碼器檢索器也被廣泛應用于基于ICL的RAG中,尤其是在基于句子嵌入相似性的檢索,以及ICL特殊需求,如多樣化示例檢索。
另一類在RA-LLMs中廣泛使用的密集檢索器是單編碼器結(jié)構(gòu),可能基于Transformer、BERT或其他現(xiàn)成的序列建模。這些單編碼器檢索器通常在大規(guī)模未對齊文檔上通過對比學習進行預訓練,因此在通用性上表現(xiàn)出色,能夠更好地適應和泛化到新領(lǐng)域或任務。這類通用型預訓練檢索器在面向多樣化任務的LLM中更加靈活,已在多種RA-LLM方法中證明了它們的有效性,例如In-Context RALM、Atlas、Self-RAG。
根據(jù)現(xiàn)有研究的實驗結(jié)果,對于開放域問答任務,與InstructGPT結(jié)合使用時,未經(jīng)微調(diào)的通用型預訓練檢索器(如Contriever)的性能可與稀疏檢索器(如BM25)相媲美。然而,它們都不如在目標數(shù)據(jù)集上經(jīng)過微調(diào)的DPR模型,這表明了在特定任務和數(shù)據(jù)上進行微調(diào)的重要性和有效性。
檢索粒度
檢索粒度是指索引資料庫時采用的檢索單元,比如:文檔、段落、詞、實體等不同層級。在大語言模型RAG應用中,選擇何種粒度會顯著影響模型的效果和性能,也取決于數(shù)據(jù)庫存儲空間大小、檢索時的計算開銷。
? 最早期的RAG系統(tǒng)建議檢索整個文檔,這種方法側(cè)重于文本閱讀和定位文檔中的關(guān)鍵信息。在生成式語言模型中,常見的粒度是段落檢索,也被稱為塊檢索。
? 而更細粒度的檢索,比如詞檢索,雖然檢索速度更快,但是對于數(shù)據(jù)庫存儲的負擔太大。詞符檢索更適合于需要尋找罕見模式或處理跨領(lǐng)域數(shù)據(jù)的場景,并且與kNN-LM等每詞符檢索策略以及相關(guān)工作配合良好。相比之下,文本塊檢索通常包含更緊湊、完整的信息,減少冗余和不相關(guān)性,因此在RAG中成為主流的檢索文本粒度。
? 另一種重要的檢索細致程度是實體檢索。與上述檢索類型不同,實體檢索是從知識而非語言的角度出發(fā)設(shè)計的。比如,F(xiàn)évry等人引入了“實體即專家”(EAE)模型,該模型根據(jù)實體身份劃分語言模型的參數(shù)空間。EAE模型的目標是從文本中學習實體表示,并結(jié)合其他模型參數(shù)使用維基百科數(shù)據(jù)庫來表示知識,并以實體記憶的形式呈現(xiàn)。在更細致的層面上,de Jong等人建議通過學習和檢索提及而非實體來構(gòu)建知識庫??傮w而言,在RAG中應用實體或提及級別的檢索,對于以實體為中心的任務來說更為有效,并且在空間利用上比逐詞符檢索更為高效。
預檢索和檢索后處理
為了提高檢索的精確度和相關(guān)性,大家設(shè)計了多種策略優(yōu)化檢索器的輸入輸出流程。
? Query2doc:通過少量示例引導大語言模型生成模擬文檔,利用這些文檔中的信息來擴展查詢,以提高查詢的準確度。這種方法能夠有效提升稀疏和密集檢索器在特定信息檢索數(shù)據(jù)集上的表現(xiàn)。
? HyDE:利用大語言模型生成假設(shè)文檔,然后將假設(shè)文檔作為新的查詢輸入,這樣能提高檢索的準確性。
- 另一種預檢索策略是查詢重寫,其目的是縮小輸入文本與檢索所需知識之間的差異,將原始問題轉(zhuǎn)化為更利于檢索的形式。
? 馬等研究者提出了重寫-檢索-閱讀框架,該框架通過LLM生成針對檢索功能的查詢。重寫步驟的目的是為了在新的查詢中明確檢索需求,減輕檢索功能理解輸入的負擔,并提高輸出質(zhì)量,即檢索到的相關(guān)信息。他們測試了使用固定LLM和可訓練模型作為重寫器的兩種情況,均優(yōu)于傳統(tǒng)的RAG或生成模型,并在不同問答(QA)數(shù)據(jù)集上展現(xiàn)了不同的性能表現(xiàn)。
? 余等研究者提出了查詢增強技術(shù),將原始查詢與初步生成的輸出合并為新的查詢,以便從外部數(shù)據(jù)庫中檢索更多相關(guān)信息。這些檢索結(jié)果能夠激發(fā)語言模型重新審視并優(yōu)化生成的結(jié)果。與僅使用原始查詢相比,這種增強方法可能會為語料庫中檢索到的與查詢-輸出關(guān)系直接相關(guān)的信息提供更多幫助。將初始輸出納入新查詢中,進一步增強了待檢索支持文檔與提出問題之間的詞匯和語義重疊。查詢增強在所有查詢增強策略中表現(xiàn)更佳,因為它在生成答案時能夠綜合處理所有檢索到的知識。
后檢索增強指的是在將檢索器提取的前k個文檔輸入生成器之前,對這些文檔進行處理的步驟,以改善檢索與生成階段之間的匹配度,尤其適用于LLMs等封閉源生成器。
? 楊等研究者[164]提出了可插拔的獎勵驅(qū)動上下文適配器(PRCA),該適配器允許在特定數(shù)據(jù)集上對輕量級適配器而非生成器進行微調(diào)。它還通過強化學習對檢索文檔進行提煉,提煉過程基于生成器產(chǎn)生的獎勵。
? Glass等研究提出了檢索-重排-生成(R2G)方法,該方法將不同檢索方法檢索到的文檔通過重排操作整合起來,以增強檢索結(jié)果的穩(wěn)健性。應用后檢索增強的另一個考慮是,檢索到的信息有時可能不相關(guān)或包含噪聲,這可能不會幫助生成模型完成任務,甚至可能對生成過程產(chǎn)生負面影響。
? 王等研究者、Asai等研究者、余等研究者提出了多種策略來減少檢索知識文檔中的噪聲。然而,熊等研究者的實證研究表明,這些方法依賴于LLM的置信水平,其精確度可能并不如預期。針對這一問題,王等研究者提出了BlendFilter方法,該方法同時考慮了預檢索查詢生成的混合以及后檢索知識的過濾。這種方法能夠同時解決復雜問題的檢索和知識噪聲問題,從而全面提升了檢索增強模型的性能。
最近提出了利用LLMs生成推理路徑和計劃的高級RAG流程,通過與信息檢索(IR)模塊的迭代配合,逐步檢索知識以增強基于LLM的生成能力。然而,朱等研究者指出,如果IR和LLM的輸出質(zhì)量不高,檢索和生成過程可能會在這樣的迭代引導流程中相互阻礙。為克服這一障礙,他們提出了一種新的推理方法,用以增強查詢和檢索到的知識。
后檢索策略也可用于提高檢索結(jié)果與生成模型之間的兼容性。例如,現(xiàn)有LLMs的一個主要限制是輸入令牌的長度,這限制了長檢索文檔直接融入現(xiàn)有的RA-LLMs。為解決這一限制,徐等研究者提出了檢索、壓縮、前置(RECOMP)方法,該方法在生成過程中的上下文增強前增加了一個中間步驟,將檢索到的文檔處理成文本摘要。
數(shù)據(jù)庫
圖片
RAG的檢索依托于外部知識源,這些知識源可以是封閉的或開放的,如上圖所示。封閉源數(shù)據(jù)庫通常存儲鍵值對形式的知識,這些鍵值對可以有多種構(gòu)建方式。鍵主要用于相似性匹配,可以是BM25中的稀疏向量,也可以是檢索編碼生成的密集嵌入。值的內(nèi)容取決于檢索目標,大多數(shù)情況下是原始文本。
例如,早期RAG會將每篇維基百科文章分割成100字的獨立段落,總計約2100萬份文檔[69]。這些文檔通過密集嵌入編碼,其值和鍵分別存儲于數(shù)據(jù)庫中。值也可以是標記,每個標記對應一個,如kNN-LM和Spalm中所采用的。數(shù)據(jù)庫的來源根據(jù)應用領(lǐng)域和任務的不同而異。
維基百科是RAG研究中常用的通用檢索集,它存儲了大量事實性結(jié)構(gòu)化信息,并且有不同規(guī)模的版本,從十億級到萬億級。特定領(lǐng)域的數(shù)據(jù)庫也用于特定的下游任務。例如:
? 在代碼生成任務中,Zan等人收集了公共庫的API信息和代碼文件,構(gòu)建了API檢索器數(shù)據(jù)庫。
? 周等人則提出使用一個頻繁更新新內(nèi)容的文檔池。使用互聯(lián)網(wǎng)搜索引擎,如Bing和Google,可以避免維護搜索索引的麻煩,同時能夠獲取最新的知識。它還提供了比封閉源數(shù)據(jù)庫更廣泛的知識基礎(chǔ)。互聯(lián)網(wǎng)搜索已經(jīng)與大型語言模型(LLM)廣泛結(jié)合,顯示出在知識增強、事實核查和大語言模型增強等方面的有效性。
與常規(guī)RAG相比,互聯(lián)網(wǎng)搜索在RA-LLMs中作為檢索器的使用更為頻繁,這是因為LLM具有理解搜索結(jié)果的非凡能力,即檢索到的文檔,以及使用工具處理和分析這些文檔的能力[92]?,F(xiàn)有研究表明,利用搜索引擎(如InstrucGPT)對于LLM在零樣本知識密集型任務,如OpenQA和事實核查上,尤其有效。
生成器
在整個檢索增強生成過程中,生成器的作用也至關(guān)重要。目前生成器主要有兩種主流選擇,分別是:純解碼器模型和編碼器-解碼器模型。
但是在實際應用中,生成器往往可以分類為白盒模型和黑盒模型。
白盒模型
白盒模型是指可以訪問到模型參數(shù)的模型。
? 編碼器-解碼器模型獨立處理輸入和目標,使用不同的參數(shù)集,并通過交叉注意力機制將輸入標記與目標標記相連接。T5和BART是這類模型的典型代表。
? 純解碼器模型在輸入和目標串聯(lián)后進行處理,使得兩部分的表征能夠逐層并行構(gòu)建,隨著網(wǎng)絡的深入而逐步形成。
這兩種架構(gòu)的生成器在RAG研究中得到了廣泛的應用。例如,RAG和Re2G采用了BART模型;而FID和EMDR2則利用了T5。還有一些其他模型采用了基于Transformer的編碼器-解碼器架構(gòu),并進行了特定的定制設(shè)計。
RAG中的生成器通過整合檢索到的數(shù)據(jù)來提升生成的準確性和相關(guān)性,從而與傳統(tǒng)生成器有所區(qū)別。此外,白盒生成器支持參數(shù)優(yōu)化,能夠通過訓練適應不同的檢索和增強方法,以提升生成效果。
黑盒模型
黑盒模型是指不可訪問參數(shù)的生成器。部分大型語言模型(LLMs)發(fā)布時并未公開其內(nèi)部結(jié)構(gòu)或參數(shù)訪問權(quán)限,尤其是那些規(guī)模極大的模型,如GPT系列、Codex和Claude,這些通常被稱為黑盒生成模型。這類生成器僅支持輸入查詢和接收響應的基本操作,不允許修改其內(nèi)部結(jié)構(gòu)或更新參數(shù)。
從另一個角度來看,即便是開放微調(diào)的大型語言模型,由于其龐大的規(guī)模,也難以僅憑有限的數(shù)據(jù)量針對特定下游任務進行有效微調(diào)。
因此,黑盒RA-LLMs更側(cè)重于檢索和增強過程,通過為輸入添加更豐富的知識、指導或示例來提升生成器的性能。
檢索與生成融合技術(shù)
圖片
融合技術(shù)是將檢索和生成模塊整合起來的關(guān)鍵步驟,在增強型大型語言模型(RA-LLMs)中扮演著至關(guān)重要的角色。一般有三種主要的融合設(shè)計策略:輸入層融合、輸出層融合和中間層融合,這些設(shè)計分別作用于生成器的不同層面,具體細節(jié)如上圖。
輸入層融合
一種常見的融合檢索信息或文檔的方法是將其與原始輸入或查詢結(jié)合,然后一并送入生成器,這種方法稱為輸入層融合。例如,In-Context RALM 通過將原始輸入和所有檢索到的文檔串聯(lián)成單一序列,以此作為生成模型的新輸入,實現(xiàn)了輸入層融合。盡管這種方法效果顯著,但它受限于檢索到的文檔數(shù)量,因為過長的輸入序列可能超出了生成模型的處理能力。
特別是對于大型語言模型,輸入層融合可能會將檢索到的內(nèi)容用作(額外的)提示或示例,而不僅僅是作為傳統(tǒng)RAGs 中對原始輸入的補充。提示檢索的目的是自動找到合適的自然語言提示,通過檢索教導LLM在特定上下文中學習或促使LLM進行推理。這種方法可以在不進行精細的提示設(shè)計的情況下增強LLM的零樣本能力。例如,Cheng等提出了一種基于輸入-提示對數(shù)據(jù)學習提示檢索器的方法,這些數(shù)據(jù)的得分標簽來自一個固定的LLM。
輸出層融合
增強技術(shù)的另一種形式是輸出層融合,它將檢索結(jié)果與生成結(jié)果相結(jié)合。
例如,kNN-LM 在預測階段將語言模型產(chǎn)生的下一個令牌分布與檢索語料庫中的最近鄰產(chǎn)生的分布進行插值。輸出層的線性融合方法應用靈活,因為它可以無縫集成到大多數(shù)生成模型中,無需額外訓練。但是,輸出層融合的簡潔性也可能限制模型對檢索文本進行深入推理的能力。
為了克服這一限制,Yogatama等人提出了增加一個額外的門控網(wǎng)絡來后處理檢索數(shù)據(jù),從而獲得更好的性能。輸出層融合與輸入層融合一樣,都是合理且適應性強的策略。
REFEED 提出了一種答案優(yōu)化機制,利用LLM評估檢索到的信息,并據(jù)此調(diào)整初始答案,以提升回答的準確性。同樣,Zhang等人提出的COMBO框架,通過預訓練的鑒別器將LLM生成的段落與檢索到的對應段落匹配成兼容對,然后通過基于解碼器的融合方法來得出最終答案。
中間層融合
與前述的兩種非參數(shù)方法相比,更深入的增強方法是設(shè)計一個半?yún)?shù)模塊,通過生成模型的內(nèi)部層來整合檢索結(jié)果,這稱為中間層融合。這種融合可能會增加額外的復雜性,但有望通過有效訓練提升生成模型的性能。通常,會引入一個Transformer模塊,將檢索到的信息(通常編碼為密集表示)融入到生成模型中,以便在生成過程的中間階段與模型的內(nèi)部表示進行交互。
例如,RETRO 引入了一個塊狀交叉注意力(CCA)層來處理生成器塊中的檢索塊,而Wu等人 引入了kNN增強的注意力層。EAE 和TOME 也分別使用實體記憶和記憶注意力層來整合檢索到的實體及其提及。這種中間層融合可以頻繁且高效地使用多個模塊來增強整個RAG模型的能力。它為頻繁檢索的大量文本塊提供了一種有效的整合方式,這些文本塊由于語言模型的輸入長度限制而難以通過輸入層融合來處理。然而,也應注意到,中間層融合需要對生成模型有較高的訪問權(quán)限,這對于那些主要通過推理API [92] 提供訪問的大多數(shù)LLMs來說是不現(xiàn)實的。
檢索增強的必要性與頻次
在基于大語言模型的生成任務中,檢索操作的主要目的是補充知識以提升生成質(zhì)量。盡管檢索增強型模型展現(xiàn)出了潛力,但它們也因無法普遍適用而受到批評。無差別地向LLM添加無關(guān)文段可能會覆蓋LLM已掌握的正確知識,反而導致錯誤響應。Thakur等人現(xiàn)LLM在處理不相關(guān)檢索文段時的幻覺率可能是相關(guān)文段的兩倍。因此,對于增強型LLM(RA-LLMs)來說,準確回憶先驗知識并在必要時有選擇性地整合檢索信息,是構(gòu)建魯棒RA-LLMs的關(guān)鍵。
大多數(shù)現(xiàn)有方法根據(jù)LLM的初步答案或其內(nèi)部推理結(jié)果來判斷檢索的必要性。例如,Self-RAG引入特殊標記來評估檢索的必要性并控制檢索行為。還有方法設(shè)計迭代提示,以決定在生成過程中是否需要額外信息,進而觸發(fā)LLM的檢索或其他操作。在傳統(tǒng)RAGs中,也探索了檢索必要性的判斷,并提出通過直觀方法如評估生成模型產(chǎn)生的logits的置信度來解決。這種解決方案同樣適用于RA-LLMs,例如,F(xiàn)LARE在logits低于特定閾值時動態(tài)啟動RAG。
Tan等人提出了SlimPLM,這是一種協(xié)作式方法,通過一個精簡的代理模型檢測LLM中缺失的知識,并生成一個“啟發(fā)式答案”。這個答案用來評估檢索的必要性,并在需要時通過查詢重寫促進檢索過程。
在傳統(tǒng)RAGs中,由于很少考慮檢索的必要性,檢索頻次(也稱為檢索步幅)成為重要的設(shè)計考量,它決定了在生成中使用檢索的程度,從而顯著影響RAG模型的整體性能。檢索頻次控制了對檢索結(jié)果的依賴程度,影響模型的效率和效果。當不考量檢索必要性時,檢索頻次通常是預設(shè)且固定的,常見的設(shè)置有:一次性、every-n-token 和 every token。
一次性檢索僅在生成過程開始時調(diào)用一次檢索功能,嘗試一次性找到所有所需信息,并隨后將所有檢索到的文檔與原始輸入一起提供給生成模型,如REALM 所應用的。這種方式更適合于LLM已經(jīng)明確知道外部數(shù)據(jù)庫所需信息的情況。
然而,對于需要長篇輸出的語言任務,如開放域摘要,輸出中token之間的依賴性在生成過程中更為重要。在這些情況下,通過一次性檢索預先檢索到的文檔可能不足以支持整個輸出序列的生成,這就要求在生成過程中進行檢索操作。為此,In-Context RALM 和RETRO 在生成過程中采用每n個token檢索,以實現(xiàn)更好的增強效果。相比之下,kNN-LM 采用了更頻繁的檢索策略,為生成過程中每個令牌的預測檢索信息。總體而言,采用不同頻次的檢索可以影響整個RAG方法的有效性和效率。例如,更頻繁的檢索雖然能提升性能,但也會提高計算成本。因此,在計算成本和性能之間選擇檢索頻次幾乎是一種權(quán)衡。
模型訓練
圖片
現(xiàn)有的RAG技術(shù)根據(jù)是否需要訓練分為兩大類:無需訓練的方法和基于訓練的方法。無需訓練的方法在推理階段直接應用檢索到的知識,通過將檢索文本嵌入到提示中,避免了額外的訓練步驟,這在計算上更為高效。但這種方法可能面臨的問題是,檢索器和生成器沒有為特定下游任務進行特別優(yōu)化,這可能導致檢索知識的有效利用不足。為了更充分地利用外部知識,提出了一系列方法對檢索器和生成器進行微調(diào),以指導大型語言模型應用有效地適應和整合檢索到的信息。根據(jù)訓練策略的不同,將這些基于訓練的方法細分為三個類別:獨立訓練方法、順序訓練方法和聯(lián)合訓練方法。
無需訓練方法
由于需要大量的時間和計算資源,頻繁地進行微調(diào)和更新模型參數(shù)中存儲的知識存在很大的問題,所以通過引入檢索機制來增強LLM,使其能夠在無需額外訓練的情況下,動態(tài)地從外部來源獲取新知識,而不是僅依賴于模型參數(shù)中隱含的知識。這些方法在各種知識密集型任務中,如開放領(lǐng)域問答和文檔摘要,都顯示出了顯著的性能提升。根據(jù)LLM使用檢索信息的不同策略,將這些無需訓練的方法分為兩大類:基于提示工程的方法和檢索引導的令牌生成方法。
基于提示工程的方法
由于LLM的生成性能極大地依賴于輸入查詢,許多無需訓練的RAG方法通過優(yōu)化原始提示來利用外部知識。具體來說,檢索到的文本通常作為上下文信息,與原始提示結(jié)合,以引導LLM的生成過程。
例如,In-Context RALM在不改變LLM參數(shù)的情況下,將檢索到的文檔直接插入到原始提示之前,以增強生成過程:
? IRCoT通過交替進行鏈式思維(CoT)生成和知識檢索步驟,相比僅以問題作為查詢的標準檢索方法,能夠檢索到更相關(guān)的信息以支持后續(xù)的推理步驟。
? GENREAD不是直接從大型語料庫中檢索知識,而是首先引導LLM根據(jù)查詢生成上下文文檔,然后基于這些文檔和問題生成答案。
? SKR提出一種方法,讓LLM根據(jù)自身的內(nèi)部知識判斷是否能夠回答特定問題,從而靈活地利用內(nèi)部和外部知識,通過選擇性地調(diào)用檢索器。
? TOC首先為模糊問題檢索相關(guān)知識,然后通過將模糊問題分解為多個明確的子問題,遞歸構(gòu)建樹狀結(jié)構(gòu),進一步聚合以生成長篇答案。
檢索引導的令牌生成方法
除了將外部知識直接整合到原始提示中,還可以利用輔助信息來調(diào)整令牌生成過程:
? KNN-KMs首先根據(jù)給定的查詢從數(shù)據(jù)存儲中檢索??個最相關(guān)的上下文,并基于距離計算鄰居分布,然后通過插值鄰居分布和原始模型的輸出分布來校準輸出分布。
? Rest提出了一種方法,用非參數(shù)檢索數(shù)據(jù)存儲替代參數(shù)化的草圖模型,并根據(jù)當前上下文檢索相關(guān)令牌,以進行推測性解碼。
獨立訓練
獨立訓練是指將檢索器和大語言模型作為兩個完全獨立的過程進行訓練,訓練期間兩者之間不發(fā)生交互。相較于無需訓練的方法,通過訓練LLM以利用檢索得到的知識,或訓練檢索器以連接信息檢索與語言生成之間的差距,可以顯著提升RAG模型的性能。在LLM的訓練中,負對數(shù)似然損失是最為典型的訓練目標,目的是引導LLM根據(jù)給定的輸入生成所需的輸出。
至于檢索器,它可以分為兩種類型:1) 稀疏檢索器;2) 密集檢索器。
稀疏檢索器通常使用詞頻等稀疏特征來表示文檔,并依據(jù)特定任務的度量標準(如TF-IDF和BM25)來計算相關(guān)性得分。
密集檢索器則利用深度神經(jīng)網(wǎng)絡將查詢和文檔編碼為密集的表示,然后通常采用內(nèi)積方法來計算相關(guān)性得分并檢索相關(guān)的外部知識。例如,DPR使用兩個獨立的BERT網(wǎng)絡分別對查詢和段落進行編碼,并通過對比學習的方法進行模型訓練。CoG提出訓練一個前綴編碼器和短語編碼器以用于檢索,并將文本生成重新定義為從現(xiàn)有源文本集中執(zhí)行多次復制和粘貼操作的過程。
順序訓練
獨立訓練因其高效性,成為在生成過程中利用外部知識的優(yōu)選方法。這種方法允許檢索器和生成器離線訓練,且能直接應用現(xiàn)成模型,從而節(jié)省了額外的訓練成本。
為了進一步提升檢索器與生成器之間的協(xié)同效應,研究者提出了一系列順序訓練的方法。在這些方法中,通常先獨立預訓練檢索器或大語言模型,隨后固定其中一個模塊,對另一個進行訓練 。
與獨立訓練相比,順序訓練通過協(xié)調(diào)訓練檢索器和生成器,使得可訓練模塊得到固定模塊的輔助。根據(jù)檢索器和生成器的訓練順序,順序訓練可分為兩類:1) 先訓練檢索器;2) 先訓練LLM。
先訓練檢索器
這些方法首先對檢索模型進行訓練并固定,然后利用檢索到的知識對LLM進行訓練:
? RETRO 使用獨立預訓練的BERT模型作為檢索器,并訓練了一個編碼器-解碼器架構(gòu),將檢索到的內(nèi)容塊整合到模型預測中。RALMs 采用Google Search和開源的COLBERTV2 作為預訓練檢索器,并對LLM進行微調(diào),以有效利用檢索到的文章。
? ITERRTGEN 利用預訓練的S-BERT 作為檢索器,并引入了一種自適應混合檢索策略來檢索示例。同時,它使用T5 作為生成器,并根據(jù)目標標簽和結(jié)合原始提示與檢索到的示例的輸入進行進一步微調(diào)。
? SMALLCAP 提出利用強大的預訓練多模態(tài)網(wǎng)絡CLIP 來編碼輸入圖像和外部數(shù)據(jù)存儲的文本數(shù)據(jù),并通過余弦相似性檢索最相關(guān)的項目。訓練了一個交叉注意力層,并采用GPT-2 作為解碼器來生成標題。
先訓練LLM
同樣,也可以首先預訓練LLM,然后在訓練有素的LLM的監(jiān)督下調(diào)整檢索器。
? DKRR 表明,序列到序列模型的注意力分數(shù)可以指示文檔的相關(guān)性。因此,他們提出使用閱讀器模型的注意力分數(shù)來生成合成標簽,以訓練檢索器。
? AAR 提出使用小型語言模型來生成訓練檢索器的監(jiān)督信號。訓練有素的檢索器可以進一步用于提升黑盒LLM的性能。
? RA-DIT 首先對LLM進行微調(diào),以增強其利用檢索到的知識的能力,然后訓練檢索器以更好地與LLM的輸出對齊。
? UPRISE 提出了一種輕量級方法,通過引入提示檢索器來增強LLM在未見任務中的零樣本性能。在推理過程中,使用凍結(jié)的LLM來指導提示檢索器的微調(diào)過程,該檢索器隨后為不同任務的不同LLM檢索提示。
聯(lián)合訓練
聯(lián)合訓練方法通過端到端的訓練模式同步提升檢索器與生成器的性能。這種訓練方式相較于分步訓練,更能有效地提升檢索器尋找外部知識以供生成使用的能力,同時增強生成器利用檢索到的信息的效率。
應用場景
圖片
? 自然語言處理NLP
? QA系統(tǒng)
? ChatBot
? 事實驗證
? 下游任務
? 推薦系統(tǒng)
? 軟件工程
? 領(lǐng)域應用
? 科研
? 金融
? 論文原文: ??https://arxiv.org/abs/2405.06211??
本文轉(zhuǎn)載自??大語言模型論文跟蹤??,作者: HuggingAGI
