当前位置: 首页 > backend >正文

【论文解读】Search-o1:用 Agentic 搜索增强推理模型

1st author: Xiaoxi Li - Homepage

paper: [2501.05366] Search-o1: Agentic Search-Enhanced Large Reasoning Models

code: sunnynexus/Search-o1: Search-o1: Agentic Search-Enhanced Large Reasoning Models


5. 总结 (结果先行)

Search-o1 框架为 LRM 引入了一种智能、动态的知识获取和利用机制。通过赋予 LRM “何时搜索”、“搜索什么” 的自主权,并通过一个独立的模块来 “提炼和消化” 搜索结果,该方法有效地解决了 LRM 在面对复杂推理任务时的知识瓶颈问题。这不仅提升了模型的准确性,也增强了其推理过程的连贯性和可靠性。

1. 思想

当前的 大型推理模型 (LRMs),如 “OpenAI-o1” ,虽然能进行长链条思考 (Chain-of-Thought, CoT),但经常受限于其内部知识的不足。这会导致在复杂问题上出现不确定性甚至错误。传统的 RAG (Retrieval-Augmented Generation) 通常是一次性检索,难以适应多步推理中动态出现的知识需求。

Search-o1 提出,LRM 应该具备一种 “智能体式搜索” (Agentic Search) 的能力:当模型在推理过程中意识到自己知识不足时,能主动决定去搜索外部知识。更进一步,由于原始检索文档通常冗长且充满噪声,直接塞给 LRM 可能会干扰其思考连贯性,甚至引入新的错误。因此,他们设计了一个 “文档内推理” 模块,对检索到的信息进行提炼和整合,然后再注入到主推理流程中。整个过程无需训练

Figure 2

2. 方法

Search-o1 框架主要包含两个核心组件,嵌入在 LRM 的推理流程中:

  1. 智能体式检索增强生成 (Agentic RAG) 机制:

    • 当 LRM 在生成推理步骤 R R R 时,如果遇到不确定的知识点,它会自主生成一个搜索查询 q search ( i ) q_{\text{search}}^{(i)} qsearch(i) (第 i i i 次搜索)。这是通过模型解码特定的 token 序列来实现的,例如 <query> q search ( i ) </query> \text{<query>}q_{\text{search}}^{(i)}\text{</query>} <query>qsearch(i)</query>
    • 该查询 q search ( i ) q_{\text{search}}^{(i)} qsearch(i) 会被发送给外部搜索引擎,获取一组相关文档 D ( i ) = { d 1 ( i ) , d 2 ( i ) , … , d k ( i ) } D^{(i)} = \{d_1^{(i)}, d_2^{(i)}, \dots, d_k^{(i)}\} D(i)={d1(i),d2(i),,dk(i)}
    • 这个搜索查询的生成是条件概率 P ( q search ( i ) ∣ I , q , R ( i − 1 ) ) P(q_{\text{search}}^{(i)} | I, q, R^{(i-1)}) P(qsearch(i)I,q,R(i1)),其中 I I I 是任务指令, q q q 是原始问题, R ( i − 1 ) R^{(i-1)} R(i1) 是第 i i i 次搜索前的所有推理步骤。
  2. 文档内推理 (Reason-in-Documents) 模块:

    • 直接将 D ( i ) D^{(i)} D(i) 注入推理链,效果不佳。此模块的目的是从 D ( i ) D^{(i)} D(i) 中提炼出简洁、相关的知识。

    • 该模块本身也利用 LRM (通常是同一个模型,但有不同的指导 prompt),输入包括当前的 q search ( i ) q_{\text{search}}^{(i)} qsearch(i)、检索到的 D ( i ) D^{(i)} D(i) 以及先前的推理上下文 R ( < i ) R^{(<i)} R(<i) (即 R ( i − 1 ) R^{(i-1)} R(i1) 中与当前搜索相关的部分)。

    • 它首先会生成一个对文档的中间分析步骤 r docs ( i ) r_{\text{docs}}^{(i)} rdocs(i),然后生成最终的精炼知识 r final ( i ) r_{\text{final}}^{(i)} rfinal(i)

      • P ( r docs ( i ) ∣ R ( < i ) , q search ( i ) , D ( i ) ) P(r_{\text{docs}}^{(i)} | R^{(<i)}, q_{\text{search}}^{(i)}, D^{(i)}) P(rdocs(i)R(<i),qsearch(i),D(i))
      • P ( r final ( i ) ∣ r docs ( i ) , R ( < i ) , q search ( i ) ) P(r_{\text{final}}^{(i)} | r_{\text{docs}}^{(i)}, R^{(<i)}, q_{\text{search}}^{(i)}) P(rfinal(i)rdocs(i),R(<i),qsearch(i))
    • 这个精炼后的知识 r final ( i ) r_{\text{final}}^{(i)} rfinal(i) 会被包裹在特定 token (如 <result> r final ( i ) </result> \text{<result>}r_{\text{final}}^{(i)}\text{</result>} <result>rfinal(i)</result>) 中,并插入到主推理链中。
      Instruction

在给定任务指令 I I I 和问题 q q q 的条件下,模型生成特定推理过程 R R R 和最终答案 a a a 的联合概率为:
P ( R , a ∣ I , q ) = ∏ t = 1 T r P ( R t ∣ R < t , I , q , { r final ( j ) } j ≤ idx ( t ) ) ⋅ ∏ t = 1 T a P ( a t ∣ a < t , R , I , q ) P(R, a | I, q) = \prod_{t=1}^{T_r} P(R_t | R_{<t}, I, q, \{r_{\text{final}}^{(j)}\}_{j \le \text{idx}(t)}) \cdot \prod_{t=1}^{T_a} P(a_t | a_{<t}, R, I, q) P(R,aI,q)=t=1TrP(RtR<t,I,q,{rfinal(j)}jidx(t))t=1TaP(ata<t,R,I,q)
该公式将生成推理过程和生成答案视为两个相继的阶段。

  1. 第一阶段 (推理过程生成,右侧第一部分):模型逐步构建推理链。在每一步,它都会参考之前的思考、问题、指令,以及此时此刻通过 Search-o1 机制获取并精炼的外部知识。外部知识的引入是动态的,取决于推理到哪一步以及模型认为何时需要搜索。
  2. 第二阶段 (答案生成,右侧第二部分):一旦推理过程完成,模型基于这个完整的推理过程、问题和指令来逐步生成最终答案。

这里:

  • R R R:表示模型生成的完整推理过程 。 R t R_t Rt 是推理链 R R R 中的第 t t t 个 token。
  • a a a:表示模型生成的最终答案。 a t a_t at 是答案 a a a 中的第 t t t 个 token。
  • { r final ( j ) } j ≤ idx ( t ) \{r_{\text{final}}^{(j)}\}_{j \le \text{idx}(t)} {rfinal(j)}jidx(t) 表示在生成 R t R_t Rt 之前,所有已经完成的 j j j 次搜索所提炼出的知识的集合。 idx ( t ) \text{idx}(t) idx(t) 是一个映射函数,指明当前推理token R t R_t Rt 依赖于哪个(或哪些)先前搜索步骤提炼出的知识。体现了知识的动态注入。

整个过程通过在推理序列中检测和插入特殊控制 token (如 <query>, </query>, <result|>, </result|>) 来协调。

3. 优势

  1. 自主知识补充: LRM 能在需要时主动获取外部知识,而不是依赖预训练时的静态知识。这对于解决知识密集型、需要最新信息的任务至关重要。
  2. 推理连贯性: “文档内推理”模块。它避免了原始检索文档的冗余和噪声对 LRM 思考过程的干扰,确保了外部知识能以一种“消化吸收后”的形态融入推理链。
  3. 提升可靠性: 通过引入外部知识来源,有望减少模型的“幻觉”和臆断,使推理过程更可信。
  4. 适应复杂推理: 与一次性 RAG 不同,这种按需、多次迭代的检索和精炼机制,更能适应复杂问题求解中不断演化的知识需求。

4. 实验

作者在多种复杂推理任务上验证了 Search-o1 的性能,使用了 QwQ-32B-Preview 作为基础 LRM。

  • 数据集:
    • 高难度推理: GPQA (博士级别科学问答), MATH500/AMC2023/AIME2024 (数学竞赛), LiveCodeBench (编程)。
    • 开放域问答: Natural Questions (NQ), TriviaQA (单跳);HotpotQA, 2WikiMultihopQA, MuSiQue, Bamboogle (多跳)。
  • 对比基线:
    • Direct Reasoning (无检索)
    • Standard RAG (传统一次性检索)
    • RAgent (只有智能体式检索,无“文档内推理”模块)
  • 主要结果:
    • 显著优越性: 在 GPQA、数学和代码生成等复杂推理任务上,Search-o1 显著优于所有基线方法。这证明了“按需搜索”和“结果精炼”的组合威力。
    • “文档内推理”的重要性: Search-o1 比 RAgent (仅有Agentic RAG) 表现更好,凸显了知识精炼模块的价值。直接喂给模型原始文档确实效果不佳。
    • 人类水平: 在 GPQA 扩展集上,Search-o1 在物理和生物子任务上表现优于人类专家,整体性能也与人类专家相当或略优。
    • 多跳问答: 在需要多步信息整合的多跳 QA 任务上,Search-o1 也表现出色,超过了其他 RAG 变体。
    • 检索文档数量: 随着检索文档数量 (top-k) 的增加,Search-o1 的性能能够得到提升 (在一定范围内),说明其“文档内推理”模块能有效利用更多信息源。
http://www.xdnf.cn/news/13513.html

相关文章:

  • Oracle 的AHF (Automatic Health Framework) 工具
  • java实现RabbitMQ消息发送和接收功能(包含测试)
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(1):单词部分练习
  • Unity3D SRP Batcher原理分析
  • DEM 地形分析与水文建模:基于 ArcGIS 的流域特征提取
  • Android 10.0 勿扰模式开启关闭功能实现
  • DevOps软件开发流程规范
  • 抖音授权登录-获取用户授权调用凭证
  • MySQL进阶之索引(1)索引结构分类语法和SQL性能分析
  • Guava常用工具类使用教程
  • 使用OpenCV和Python进行图像掩膜与直方图分析
  • Java基于局域网的聊天室系统设计与实现,附源码+论文
  • ACS的ExtendedSegmentArc1 方法说明
  • 代理模式:AOP 切面编程的底层实现基础
  • Hello Robot发布Stretch3机器人高保真模拟平台-Stretch MuJoCo v0.5-涵盖数百种Robocasa厨房应用测试场景
  • 零基础设计模式——行为型模式 - 中介者模式
  • 使用Jmeter做功能测试有哪些优点?
  • C++ 中的 iostream 库:cin/cout 基本用法
  • Python训练第五十天
  • milvus 总结
  • Uniapp实现多选下拉框
  • 微信小程序Echarts开发问题
  • Vue 数据代理机制对属性名的要求
  • 如何正确的用Trae 打开 Unity 3D 项目
  • 计算机视觉与深度学习 | 基于Matlab的低照度图像增强算法:全面总结与实现
  • 问题八、Articulation中的actuator(执行器)
  • PostgresSQL日常维护
  • Jenkins + Docker + Kubernetes(JKD)自动化部署全链路实践
  • Axure应用交互设计:文本输入计数、显示输入内容、AI对话
  • 适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案