ChunkRAG:比CRAG提升10個點準確率
1. RAG目前存在的問題
RAG系統前前發展取得了一定的成果,但是仍然存在一個問題:在獲取文檔時會檢索到不相關或關聯較弱的信息。目前的檢索技術,即使是重排序和查詢重寫,不但不能濾除檢索文檔中的大量無關信息塊,還致使響應生成出現一系列諸如事實不準確、不相關以及幻覺等問題。
傳統上RAG 系統會檢索大量整個文檔的文本或者其中冗長的部分,認為這些冗長片段可能包含相關信息。然而,這類系統極少單獨審視檢索到的文檔的章節或段落,所以很可能會有不相關或只是部分相關的信息流入生成階段。
語言模型生成流暢文本時無法驗證所用信息,這讓情況更糟。相關或誤導性的片段嚴重扭曲此類模型的結果,降低了系統的可靠性,尤其在開放領域問答和多跳推理等關鍵任務中。
圖片
上圖展示了RAG系統檢索過程中有沒有過濾機制的差別。
? 沒有塊過濾時,像其他法國城市這類不相關信息會被包含在響應里。
? LLM 驅動的塊過濾能去除不必要內容,給出準確答案“法國的首都是巴黎”。
一些檢索相關的方法,如糾正性 RAG(CRAG)和 Self-RAG,試圖通過優化檢索過程來克服這些難題。CRAG 著重在檢索出錯后進行“更正”檢索,Self-RAG 在生成階段引入自我反思機制以減少不準確性。這兩種方法都在文檔層面操作,對單個檢索到的文本塊缺乏足夠過濾。這種文檔級別的方式提高了檢索的整體相關性,卻無法阻止不相關的塊被納入生成的響應中。如果無法掌控檢索內容的粒度,RAG 系統仍易將不良或誤導性信息納入輸出,最終影響性能。
為了解決該問題,作者提出了LLM 驅動的塊過濾,即 ChunkRAG,在粒度上比傳統系統更精細,實際上支持對檢索信息進行塊級過濾。
2. 什么是ChunkRAG?
ChunkRAG的目的是借助一種新穎的細粒度過濾機制,來降低檢索增強生成(RAG)系統所生成回應中的不相關性與幻覺。分為兩個階段:語義分塊與高級過濾
上圖展示了ChunkRAG的整體框架。
2.1 語義分塊(Semantic Chunking)
語義分塊是基礎步驟,將輸入文檔轉化為有語義意義的單元,以利于有效檢索和評估。此階段包含三個子流程:
?輸入準備:先運用 NLTK 的 sent_tokenize 函數把文檔切分成句子。接著,給每個句子賦予一個通過預訓練嵌入模型(比如 text-embedding-3-small)生成的嵌入向量。
?分塊形成:依據句子間的語義相似度(通過余弦相似度衡量)把連續的句子組合成分塊。如果連續句子間的相似度低于閾值($ heta=0.7$),就創建一個新分塊。每個分塊還進一步限制在 500 個字符以內,以保障后續階段的效率。
?分塊的嵌入生成:每個分塊都用上述相同的預訓練嵌入模型來表示。生成的分塊嵌入存儲在向量數據庫中,方便在查詢階段高效檢索。
2.2. 混合檢索與高級過濾
在檢索和過濾階段,將傳統的 RAG 組件與先進的微調技術加以融合,以保障強大且高質量的檢索效果。混合檢索和過濾階段詳情如下:
?檢索器初始化與查詢重寫:初始化一個能夠將用戶查詢與塊嵌入作對比的檢索器。為提升查詢效能,運用 GPT-4omini 進行查詢重寫步驟,保證查詢與所存儲的嵌入高度匹配。這能讓檢索過程的召回率和精度更出色。
?初始過濾:檢索到的塊首先通過 TF-IDF 評分與余弦相似度的組合方式進行過濾。冗余度高(相似度>0.9)的塊被剔除。其余的塊依據它們與重寫查詢的相似度來排序。
?相關性評分與閾值設定:為進一步優化相關性,大型語言模型(LLM)為每個塊賦予初始相關性分數。這些分數經自我反思和批評模型加以細化,該模型依照特定領域的啟發式規則調整分數。通過分析分數分布設定最終的動態閾值,并且只有超過此閾值的塊得以保留。
?混合檢索策略:為最大程度提升檢索成效,采用了融合 BM25 和基于 LLM 的檢索方法的雙重檢索策略。集成方法采用均等權重(各 0.5)來平衡關鍵字和語義檢索。此外,利用 Cohere 的重新排名模型(rerank-englishv3.0)對檢索到的塊進行排名,解決“Lost in the middle”的問題,增強可能被降低優先級的中心上下文的相關性。
2.3 響應生成與評估
篩選過后,剩余的塊會被當作上下文來生成最終的響應:
?響應生成:LLM 依據篩選后的上下文塊生成響應。生成期間,嚴格限制只使用檢索到的信息,從而最大程度減少幻覺風險。
?評估:針對一組預先驗證過的答案,對生成的響應進行準確性評估。
3. 效果如何
將 ChunkRAG 與現有的檢索增強生成(RAG)方法的性能進行評估。
圖片
如上圖所示,ChunkRAG 大幅超越同類別 RAG方法,相較于最接近的 CRAG(準確率 54.9),ChunkRAG方法性能提升了 10 個百分點。
雖說 10 個百分點的提升看似不大,但在實際應用中,卻意味著輸出效果呈指數級提升。
ChunkRAG之所以能有顯著的提升,主要得益于塊級過濾和細粒度相關性評估。把文本劃分成有語義的塊,減少了不相關或弱相關信息的生成。在處理塊過濾的上下文相關數據時,生成事實準確且連貫的響應的能力大幅增強。
再者,自我反思的 LLM 評分方法(即模型給自己打分然后做出相應改變),使得檢索錯誤大幅減少。不像常規檢索方法在文檔部分級別沒有過濾機制,我們的方法能夠提取出更有意義和相關的信息,直接影響生成響應的可靠性。
4. 局限性
ChunkRAG 雖有優勢,但也存在不少需留意的短板。
? ChunkRAG高度依賴塊分割的成效以及用于塊相關性評估的嵌入質量。分割中的差錯可能會產生無關數據,致使響應質量下降。
? 多層次評分的成本——在初始層面整合 LLM 與評論 LLM 評估——可能頗高,尤其是在將該方法拓展至更大的數據集或者在實時系統中部署時。
? 盡管 ChunkRAG 在運用 PopQA 數據集時取得了積極成果,但由于資源有限,其在其他領域的可用性驗證以及在處理長格式生成任務時的表現尚未得到深入剖析。未來的研究應當聚焦于優化 ChunkRAG 的計算效率,以及在不同數據集和實際應用中的評估。
本文轉載自??大語言模型論文跟蹤??
