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