混合RAG系統(tǒng),提升復(fù)雜推理任務(wù)表現(xiàn) 原創(chuàng)
前言
檢索增強生成(RAG)系統(tǒng)在處理復(fù)雜推理任務(wù)方面展現(xiàn)出顯著的潛力。然而,現(xiàn)有的RAG系統(tǒng)在面對需要復(fù)雜推理、多領(lǐng)域知識集成及數(shù)值計算的任務(wù)時,仍存在性能瓶頸。為了進一步提升系統(tǒng)的表現(xiàn),本文提出了一種混合RAG系統(tǒng),通過整合多種優(yōu)化方法,顯著增強了系統(tǒng)的推理能力和處理復(fù)雜任務(wù)的能力。本文介紹的RAG系統(tǒng)設(shè)計并實現(xiàn)了一個包括網(wǎng)頁處理、屬性預(yù)測、數(shù)值計算、LLM知識提取、知識圖譜及推理模塊在內(nèi)的綜合架構(gòu)。該系統(tǒng)能夠有效地從多種來源提取信息,并通過高級推理模塊結(jié)合這些信息,生成高質(zhì)量的答案。
一、方法
混合RAG系統(tǒng)整體架構(gòu)
混合RAG系統(tǒng)包括六個關(guān)鍵模塊:網(wǎng)頁處理、屬性預(yù)測器、數(shù)值計算器、LLM知識提取器、知識圖譜模塊和推理模塊。
- 網(wǎng)頁處理:使用trafilatura和BeautifulSoup庫從網(wǎng)頁中提取文本和表格,然后使用Blingfire庫將文本分割成句子,并根據(jù)關(guān)鍵詞將句子組織成文本塊。
- 屬性預(yù)測器:通過LLMs和SVM分類器評估問題的領(lǐng)域、類型和時效性,以優(yōu)化模型在不同問題類型上的性能。
- 數(shù)值計算器:利用外部Python解釋器進行數(shù)值計算,通過LLMs生成數(shù)學(xué)表達式,并使用eval函數(shù)處理這些表達式。
- LLM知識提取器:利用LLMs內(nèi)部的知識進行推理,減少對外部參考文檔的依賴。
- 知識圖譜模塊:通過模擬API查詢知識圖譜,使用LLMs生成查詢語句。
- 推理模塊:結(jié)合文本塊、表格、知識圖譜三元組和LLM知識進行最終答案的推理,通過設(shè)計良好的提示模板和控制推理路徑來實現(xiàn)。
1.1 網(wǎng)頁處理
網(wǎng)頁處理
- 文本塊處理:
使用trafilatura庫從網(wǎng)頁中提取純文本,該庫能有效去除噪聲,如頁眉、頁腳和鏈接。
對于trafilatura無法處理的網(wǎng)頁,使用BeautifulSoup作為備選方案。
利用Blingfire庫將提取的文本分割成句子。
根據(jù)關(guān)鍵詞將句子組織成文本塊,例如,將問題和其后的文本連接起來,直到達到預(yù)設(shè)的長度閾值。
- 表格處理:
- 使用BeautifulSoup提取網(wǎng)頁中的表格,并將其轉(zhuǎn)換為Markdown格式。
- 清理空表格以減少噪聲。
- 文本嵌入和rank指標(biāo):
rank指標(biāo)
- 使用sentence-t5-large模型生成文本塊和查詢的向量嵌入。
- 采用余弦相似度作為排名指標(biāo),計算用戶查詢嵌入和文本塊嵌入之間的相似度。
1.2 屬性預(yù)測
- In-Context Learning(ICL):利用大型語言模型(LLMs)的自然語言理解和多任務(wù)泛化能力。通過向模型提供分類指令和5個類別的示例,指導(dǎo)其對后續(xù)問題進行分類。采用自我一致性策略,多次采樣模型的輸出,選擇出現(xiàn)頻率最高的類別作為問題的分類結(jié)果。
- 支持向量機(SVM):使用CRAG公開數(shù)據(jù)集訓(xùn)練一個SVM分類器。利用MiniLM-L6-v2模型獲取句子嵌入,用于訓(xùn)練SVM。SVM模型在預(yù)測屬性方面表現(xiàn)出較高的準(zhǔn)確性,并且計算開銷較小。
屬性預(yù)測提示詞
1.3 數(shù)值計算
- 生成數(shù)學(xué)表達式:鼓勵大型語言模型(LLMs)將推理過程表述為數(shù)學(xué)表達式。將可能包含數(shù)值信息的檢索到的文本塊和表格整合到模型的提示中。使用提示技術(shù)促使模型直接生成有效的Python表達式。
- 計算表達式:使用多次采樣生成Python表達式,并通過eval函數(shù)處理這些表達式以得到計算結(jié)果。
數(shù)值計算提示詞
- 安全性和終止執(zhí)行:LLMs生成的程序代碼可能包含惡意代碼,直接執(zhí)行這些代碼可能對系統(tǒng)穩(wěn)定性構(gòu)成威脅。為了確保系統(tǒng)安全,最佳實踐是使用ast.literal_eval或在沙箱環(huán)境中執(zhí)行代碼。
1.4 LLM知識提取器
知識提取器的過程類似于常規(guī)的模型生成過程。使用zero-shot提示,這些提示要求模型評估給定查詢是否涉及錯誤前提,并生成更簡潔的響應(yīng)。在提示中不包含來自外部知識庫的參考文檔,并且不包括多次采樣,以減少計算開銷。
LLM能夠僅基于訓(xùn)練過程中內(nèi)部化的知識進行響應(yīng)。這種方法在處理被分類為慢變和穩(wěn)定的問題時表現(xiàn)良好。
直接讓模型回答問題可能會引入幻覺,盡管使用了零樣本CoT推理。為了平衡幻覺和LLM內(nèi)部知識,系統(tǒng)將LLM知識提取器的輸出僅作為參考之一。設(shè)計了特定的提示,確保模型既不過度依賴文檔參考,也不過分信任LLM的知識。
提示模板旨在讓LLM基于所有參考信息進行推理并得出最終答案。通過輸出格式示范和零樣本CoT控制推理過程,這對于多跳問題特別有用。利用Llama3-70B-Instruct的強指令遵循能力,成功地在控制推理任務(wù)方面取得了穩(wěn)步進展。
設(shè)計了多條規(guī)則來約束推理路徑和輸出格式,確保輸出精確。通過在提示中提出中間問題來引導(dǎo)模型推理。
LLM知識提取器提示詞
1.5 知識圖譜抽取模塊
使用 函數(shù)調(diào)用方法:系統(tǒng)從查詢中提取實體,并使用LLM生成函數(shù)調(diào)用來檢索相關(guān)信息。函數(shù)調(diào)用的質(zhì)量取決于LLM生成的查詢語句的質(zhì)量。
知識圖譜抽取模塊提示詞-函數(shù)調(diào)用方法的提示模板
1.6 推理模塊
- 輸入信息整合:推理模塊接收來自網(wǎng)頁處理、數(shù)值計算器、LLM知識提取器和知識圖譜模塊的所有參考信息,包括文本塊、表格、知識圖譜三元組和LLM生成的知識。
- 提示模板設(shè)計:設(shè)計了一個詳細的提示模板,用于指導(dǎo)大型語言模型(LLM)進行推理。提示模板包括系統(tǒng)提示和用戶提示。系統(tǒng)提示明確了任務(wù)要求、規(guī)則和輸出格式。用戶提示包含了具體的查詢和參考信息。
- 推理路徑控制:通過輸出格式示范和零樣本CoT技術(shù),控制推理路徑,特別是對于多跳問題。設(shè)計了多條規(guī)則來約束推理路徑和輸出格式,確保輸出精確。
- 中間問題引導(dǎo):在提示中提出中間問題,引導(dǎo)模型進行逐步推理,從而提高推理的準(zhǔn)確性和詳細程度。
- 處理不確定性和錯誤:如果參考信息不包含回答問題所需的信息,或者模型無法基于當(dāng)前知識直接回答問題,模型將回答“我不知道”。如果問題的前提是錯誤的,模型將回答“無效問題”。
- 最終答案生成:模型生成的推理過程和最終答案必須遵循嚴(yán)格的格式要求,確保答案簡潔且詳細解釋推理過程。
推理模塊提示詞
1.7 處理邊界情況
- 無效問題:通過分析提供的參考信息,識別出具有錯誤前提的問題,即查詢與事實相矛盾的問題。在推理提示中添加特殊規(guī)則,使模型在這種情況下輸出“無效問題”。
- 減少幻覺:使用屬性預(yù)測器和推理模塊來減少幻覺。對于時間變化的問題,模型會回答“我不知道”,因為這些問題難以處理。在推理模塊中添加規(guī)則和提示工程技術(shù),使模型在不確定時回答“我不知道”。
- 格式錯誤:由于未對推理輸出進行約束采樣,模型可能會生成無法解析的答案。設(shè)計了一個備份總結(jié)代理,當(dāng)解析失敗時,基于推理模塊的輸出生成簡潔準(zhǔn)確的總結(jié)。設(shè)計了一個備份總結(jié)代理,當(dāng)解析失敗時,基于推理模塊的輸出生成簡潔準(zhǔn)確的總結(jié)。
備份總結(jié)代理提示詞
二、實驗
- 領(lǐng)域?qū)傩员憩F(xiàn):系統(tǒng)在電影、音樂和開放領(lǐng)域表現(xiàn)良好,但在金融和體育領(lǐng)域表現(xiàn)不佳,主要因為這些領(lǐng)域需要處理動態(tài)信息。
- 動態(tài)性問題:隨著問題的動態(tài)性增加,系統(tǒng)的有效性逐漸下降。
- 問題類型表現(xiàn):系統(tǒng)在需要復(fù)雜推理的任務(wù)上表現(xiàn)優(yōu)異,這得益于強大的推理模塊。
消融實驗
數(shù)值計算器和推理模塊對系統(tǒng)性能的提升貢獻顯著。
總結(jié)
本文介紹了一種混合檢索增強生成(RAG)系統(tǒng),通過一系列綜合優(yōu)化顯著提高了檢索質(zhì)量、增強了推理能力并提升了數(shù)值計算能力,通過多個模塊的協(xié)同工作顯著提升了LLMs在復(fù)雜推理任務(wù)中的表現(xiàn)。
參考文獻
- A Hybrid RAG System with Comprehensive Enhancement on Complex Reasoning,https://arxiv.org/pdf/2408.05141v1
- ??https://gitlab.aicrowd.com/shizueyy/crag-new??
本文轉(zhuǎn)載自公眾號大模型自然語言處理 作者:余俊暉
