ReaRAG:教 AI 思考、搜索和自我糾正以獲得事實準確答案(含git實現)

推理模型(LRMs)的發展取得了顯著進展,展現出強大的推理能力,能在復雜任務中表現出色。然而,這些模型在多跳問答(QA)任務中仍面臨挑戰,主要歸因于其對參數化知識的依賴,導致事實準確性受限。為解決這一問題,研究人員提出了ReaRAG(Knowledge-guided Reasoning Enhances Factuality of Large Reasoning Models with Iterative Retrieval Augmented Generation)模型,通過知識引導的推理和迭代檢索增強機制,有效提升了大推理模型在多跳問答任務中的表現和事實性。

圖片

一、推理模型的現狀與挑戰

像OpenAI的o1、Qwen的QwQ-32B、GLM-Zero-Preview和DeepSeekR1等大推理模型,在復雜任務中表現出令人矚目的推理能力,能夠在生成答案前進行深思熟慮的推理。但在多跳問答任務中,僅依靠參數化知識無法滿足需求,因為這類任務往往需要超出模型記憶范圍的知識進行推理。

檢索增強生成(RAG)為提升LRMs的事實性提供了一種可行方案,它通過整合外部知識來增強模型的回答能力。但RAG在檢索相關文檔時面臨挑戰,需要精確制定搜索查詢。以往的迭代檢索策略雖構建了子查詢和子答案的推理鏈來解決多跳問答,但存在錯誤傳播問題,早期步驟的錯誤會誤導后續檢索和推理,降低最終答案的質量。例如,Search-o1采用基于提示的策略,利用LRM的推理能力迭代修正子查詢,并引入了Reason-in-Documents模塊生成子答案,但它存在特殊令牌生成不可靠、信息提取失敗和幻覺、基于強化學習的LRMs過度思考等問題,限制了其在RAG任務中的性能。

二、ReaRAG模型的設計與實現

2.1 任務形式化

ReaRAG聚焦于多跳問答任務,其目標是構建知識引導的推理鏈,提高生成答案的事實正確性。推理鏈被形式化為一系列步驟,每個步驟包含推理思維(reasoning thought)、動作(action)和觀察(observation)。推理步驟的數量由模型動態決定,但受上限 ( T_{max} ) 約束,以防止無限迭代。動作空間定義為 ( A = {search(), finish()} ) ,search動作根據推理思維生成搜索查詢,從RAG引擎中檢索相關信息,finish動作則表示推理過程結束,輸出最終答案。

2.2 知識引導推理鏈生成

為使外部知識可訪問,ReaRAG設計了結構化的推理步驟。推理思維代表模型在決定動作及其輸入參數前,對先前動作和觀察的思考過程;動作是從動作空間中采樣的JSON字典,包含相應的輸入參數;觀察是執行動作后收到的反饋,用于指導后續推理。

ReaRAG通過自動化數據構建方法來獲取推理鏈。給定一個多跳問題,模型會根據指令提示生成推理思維和動作,提取搜索查詢并在RAG引擎中執行,獲取觀察結果。這個過程會不斷迭代,直到模型選擇finish動作或達到最大迭代次數。為確保數據質量,還會通過F1指標對推理鏈生成的最終答案與真實答案進行比較,丟棄F1分數為0的推理鏈。

2.3 ReaRAG模型的微調與推理

在微調階段,ReaRAG在構建的數據集上進行有監督微調,該數據集包含知識引導的推理鏈。微調使用的損失函數僅在推理思維和動作的令牌上計算損失,以確保模型學習到有效的推理和動作策略。

在推理階段,給定指令提示和問題,ReaRAG首先生成推理思維和初始動作(通常是search動作)。提取搜索查詢并在RAG引擎中執行,獲取觀察結果。這個過程不斷迭代,模型根據觀察結果持續調整推理思維和動作。最終,ReaRAG選擇finish動作,提取最終答案,并通過提示答案模型生成簡潔的最終回答。

三、實驗設置與結果

3.1 實驗設置

為驗證ReaRAG的有效性,研究人員在多個多跳推理任務數據集上進行實驗,包括MuSiQue、HotpotQA、IIRC和單跳的Natural Questions(NQ)。由于這些數據集需要開放式答案,傳統的精確匹配(EM)指標可能無法準確評估,因此采用LLM-as-a-Judge指標( ( ACC_{L} ) ),并使用GPT-4o進行更準確的評估。

實驗設置了多種基線模型,包括上下文檢索、普通RAG和先進的RAG方法。上下文檢索直接將語料庫附加到語言模型的上下文中;普通RAG基于原始多跳問題進行單次檢索;先進的RAG方法如SelfRAG、SearChain和Search-o1等則采用了更復雜的策略來處理多跳問答任務。

3.2 實現細節

ReaRAG的RAG引擎由檢索和生成兩個主要組件構成。檢索部分使用Zhipu的API中的嵌入模型和基于GLM3架構的重排器,以提高檢索質量;生成部分則采用GLM-4-32B,在128k的上下文長度下根據檢索到的文檔生成響應。

數據構建和微調方面,種子數據集來自MuSiQue、HotpotQA和NQ的訓練集,使用QwQ-32B作為LRM生成推理鏈。為確保模型的通用性,對GLM-4-9B進行微調,使用構建的數據集(約20k經過篩選的樣本)和GLM-4的通用SFT數據集。

3.3 主要結果

實驗結果表明,ReaRAG在除單跳NQ基準測試外的所有基準測試中均優于其他基線模型。在NQ基準測試中,ReaRAG與SearChain和使用GLM-4-32B骨干的普通RAG表現相當。這主要是因為SearChain使用GPT-4o作為骨干,而普通RAG的GLM-4-32B骨干規模較大,且單跳設置中ReaRAG的強推理能力優勢不明顯。但從EM指標來看,ReaRAG與使用GLM-4-32B骨干的普通RAG差距較大,這表明EM指標可能無法有效捕捉語言模型生成的上下文有效答案。

與其他基線模型相比,ReaRAG在多跳推理任務中表現出色。在MuSiQue、HotpotQA和IIRC基準測試中,ReaRAG相對于表現最佳的基線模型SearChain,在 ( ACC_{L} ) 指標上分別有14.5%、6.5%和2.25%的提升,在EM指標上分別有7%、7%和8.5%的提升。這充分展示了ReaRAG即使使用較小規模的模型,也能具備強大的多跳推理能力。

3.4 消融實驗

為評估模型的性能,進行了封閉-book性能實驗和強推理能力影響實驗。封閉-book實驗評估語言模型的參數化知識,結果顯示QwQ-32B在需要強推理的基準測試中表現優于GLM-4,但兩者的參數化知識與使用外部知識的結果相比仍顯不足。

在強推理能力影響實驗中,研究人員微調了一個缺乏強推理能力的模型,并遵循相同的Thought-Action-Observation推理范式。結果表明,具有增強推理能力的ReaRAG-9B在多跳基準測試中始終優于缺乏推理能力的模型,在 ( ACC_{L} ) 指標上有6 - 11%的提升,在單跳NQ上有7%的提升。但在NQ上,EM指標的提升較小,在MuSiQue上EM指標甚至有所下降,這再次說明了EM指標在捕捉語言模型生成答案的可變性方面存在局限性。

四、ReaRAG模型的優勢與局限性

4.1 優勢

ReaRAG的優勢體現在多個方面。它通過知識引導的推理鏈增強了LRMs的事實性,能夠可靠地與外部知識源進行交互。在推理過程中,ReaRAG利用LRM的推理能力進行深思熟慮的思考,反思先前步驟,利用外部知識識別錯誤并優化推理,展現出強大的推理能力。與基于強化學習的方法相比,ReaRAG避免了在多跳問答中過度和冗余的搜索。

案例分析進一步展示了ReaRAG的強大推理能力。在處理關于人物關系、作品相關信息等多跳問題時,ReaRAG能夠識別錯誤、解決歧義并修正推理路徑,最終得出正確答案。例如,在判斷“Philippe, Duke of Orléans”的祖母是誰的問題上,ReaRAG最初出現錯誤,但隨后通過驗證和重新推理,成功糾正錯誤并得出正確結論。

4.2 局限性

盡管ReaRAG在多跳問答任務中表現出色,但仍存在一些局限性。其動作空間目前僅限于search和finish,這限制了它處理更廣泛問題的能力,無法執行如利用代碼編譯器進行編碼任務、執行數學計算或進行實時網絡搜索等操作。

數據構建效率方面,ReaRAG依賴LRM的強指令跟隨能力來生成結構化響應進行微調,但大量數據因有效性問題被丟棄,導致計算效率低下和資源浪費。在推理延遲上,ReaRAG通過迭代推理來解決問題,雖然提高了準確性,但與單步生成答案的模型相比,推理時間增加,這在實時應用或對延遲有嚴格要求的場景中可能會限制其實用性。

ReaRAG作為一種增強事實性的推理模型,通過迭代規劃推理步驟并利用外部知識確保推理鏈的正確性,在多跳問答任務中取得了顯著的性能提升。它有效整合了推理模型與外部知識,增強了事實準確性,同時減少了基于強化學習的LRMs中過度思考的問題。

paper:https://arxiv.org/pdf/2503.21729

git:https://github.com/THU-KEG/ReaRAG

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79919.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79919.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79919.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第2章——springboot核心機制

一、為何以繼承方式引入SpringBoot 1.提出疑問 以前我們在開發項目時&#xff0c;需要什么&#xff0c;引入對應的依賴就行&#xff0c;比如我們需要連接mysql數據&#xff0c;則引入mysql驅動的依賴&#xff0c;如下&#xff1a; <dependency><groupId>com.mys…

網絡接入服務商查詢

要查詢網站的 網絡接入服務商&#xff08;即網站服務器托管或接入的ISP公司&#xff09;&#xff0c;可以通過以下方法進行查詢&#xff1a; 方法1&#xff1a;通過IP地址查詢 步驟1&#xff1a;獲取網站IP 使用 ping 命令&#xff1a; ping example.com 返回的IP地址即為服務…

超詳細!RxSwift 中的 BehaviorRelay 使用教程(含原理 + 示例 + 實戰)

目錄 前言 1.什么是 BehaviorRelay 2.基本使用方式 3.BehaviorRelay的常用API 4.BehaviorRelay 和其它類型的對比 5.BehaviorRelay的使用場景 1.綁定UITableView 2.MVVM 場景下使用 BehaviorRelay 6.使用注意事項以及建議 1.注意事項 2.使用建議總結 7.推薦閱讀 前…

vue-grid-layout實現拖拽修改工作臺布局

效果圖 vue-grid-layout 文檔地址&#xff1a;vue-grid-layout 官網介紹&#xff1a; 使用 // 安裝&#xff1a; npm install vue-grid-layout --save// 引用&#xff1a; import { GridLayout, GridItem } from vue-grid-layout// 注冊&#xff1a; components:{ GridLay…

windows使用bat腳本激活conda環境

本文不生產技術&#xff0c;只做技術的搬運工&#xff01;&#xff01;&#xff01; 前言 最近需要在windows上使用批處理腳本執行一些python任務&#xff0c;但是被自動激活conda環境給卡住了&#xff0c;研究了一下解決方案 解決方案 call your_conda_path\Scripts\activa…

u-boot學習筆記(四)

文章目錄 cmd/sub_cmd/exit.cdo_exit()exit.c可提供的命令及使用方式&#xff1a; ext2.cdo_ext2ls()do_ext2load()ext2.c可提供的命令及使用方式&#xff1a; ext4.cdo_ext4_size()do_ext4_load()do_ext4_ls()do_ext4_write()ext4.c可提供的命令及使用方式&#xff1a; fastbo…

OpenCV 圖形API(80)圖像與通道拼接函數-----仿射變換函數warpAffine()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對圖像應用仿射變換。 函數 warpAffine 使用指定的矩陣對源圖像進行變換&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 , M 21 x M…

《React Native熱更新實戰:用Pushy打造無縫升級體驗》

《React Native熱更新實戰:用Pushy打造應用“空中加油”,實現無縫升級體驗》 寫在前面:當你的APP需要"空中加油"時… 想象一下這樣的場景:凌晨2點,你的React Native應用剛上線就爆出重大BUG,用戶差評如潮水般涌來,應用商店審核至少需要3天…此刻你多么希望能…

《社交應用架構生存戰:React Native與Flutter的部署容災決勝法則》

React Native和Flutter作為當下熱門的跨平臺開發框架&#xff0c;在社交應用開發領域各顯神通。今天&#xff0c;我們深入探索它們在高可用架構中的部署與容災策略。 React Native憑借其獨特優勢&#xff0c;在社交應用開發中擁有一席之地。它基于JavaScript和React&#xff0…

網絡靶場基礎知識

一、網絡靶場的核心概念 網絡靶場&#xff08;Cyber Range&#xff09;是一種基于虛擬化和仿真技術的網絡安全訓練與測試平臺&#xff0c;通過模擬真實網絡環境和業務場景&#xff0c;為攻防演練、漏洞驗證、安全測試和人才培養提供安全可控的實驗空間。其核心目標是通過“虛實…

AutoGen 框架解析:微軟開源的多人 Agent 協作新范式

一、引言 在大語言模型&#xff08;LLM&#xff09;快速發展的今天&#xff0c;復雜任務的自動化協作需求日益增長。微軟開源的AutoGen 框架&#xff08;GitHub Star 超 10 萬&#xff09;提供了一種基于多智能體對話的協作范式&#xff0c;通過自然語言交互實現多角色 Agent …

極簡遠程革命:節點小寶 — 無公網IP的極速內網穿透遠程解決方案

極簡遠程革命&#xff1a;節點小寶&#xff0c;讓家庭與職場無縫互聯 ——打破公網桎梏&#xff0c;重塑數字生活新體驗 關鍵詞&#xff1a;節點小寶&#xff5c;內網穿透&#xff5c;P2P直連&#xff5c;家庭網絡&#xff5c;企業協作&#xff5c;智能組網節點小寶&#xff5…

【MySQL】存儲引擎 - CSV詳解

&#x1f4e2;博客主頁&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客倉庫&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01; &…

云原生安全治理體系建設全解:挑戰、框架與落地路徑

??個人主頁??:慌ZHANG-CSDN博客 ????期待您的關注 ???? 一、引言:云原生環境下,安全治理正在被重構 在傳統IT架構中,安全防護多依賴邊界設備(如防火墻、WAF、堡壘機)進行集中式防護。然而,在云原生環境下,這種“邊界式”安全模型正面臨顛覆。 應用微服務化…

SiC MOSFET同步Buck DC-DC變換器的寬頻混合EMI濾波器設計

摘要由于 SiC MOSFET 在高速開關電源中的廣泛應用&#xff0c;導致嚴重的電磁干擾&#xff08;EMI&#xff09;問題&#xff0c;因此 EMI 濾波器的設計成為研究熱點。為了滿足電磁兼容&#xff08;EMC&#xff09;標準&#xff0c;無源 EMI 濾波器可以有效地降低 DC-DC 變換器產…

[java八股文][Java并發編程面試篇]場景

多線程打印奇偶數&#xff0c;怎么控制打印的順序 可以利用wait()和notify()來控制線程的執行順序。 以下是一個基于這種方法的簡單示例&#xff1a; public class PrintOddEven {private static final Object lock new Object();private static int count 1;private stat…

MySQL的索引和事務

目錄 1、索引 1.1 查看索引 1.2 創建索引 1.3 刪除索引 1.4 索引的實現 2、事務 1、索引 索引等同于目錄&#xff0c;屬于針對查詢操作的一個優化手段&#xff0c;可以通過索引來加快查詢的速度&#xff0c;避免針對表進行遍歷。 主鍵、unique和外鍵都是會自動生成索引的…

Qt 驗證自動釋放 + 亂碼問題(6)

文章目錄 驗證自動釋放&#xff08;對象樹上的對象&#xff09;亂碼問題的緣由解決亂碼問題1. 使用QString2. qDebug() 小結 簡介&#xff1a;上一篇文章寫到&#xff0c;當new出一個控件對象并且將它掛到對象樹上&#xff0c;無需我們手動釋放該對象&#xff0c;是因為在一個合…

fastjson2 json.tojsonstring 會自動忽略過濾掉 key: null的數據

如果你想在序列化時保留值為 null 的字段&#xff0c;只要打開 Fastjson2 的 WriteNulls 特性即可。常見做法有兩種——按調用級別開啟&#xff0c;或全局開啟。 1. 在每次序列化時加 WriteNulls import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONWriter…

LeetCode熱題100--54.螺旋矩陣--中等

1. 題目 給你一個 m 行 n 列的矩陣 matrix &#xff0c;請按照 順時針螺旋順序 &#xff0c;返回矩陣中的所有元素。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 輸出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 輸入&#xff1a;ma…