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.mzph.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…