【论文解读】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 可能会干扰其思考连贯性,甚至引入新的错误。因此,他们设计了一个 “文档内推理” 模块,对检索到的信息进行提炼和整合,然后再注入到主推理流程中。整个过程无需训练。
2. 方法
Search-o1 框架主要包含两个核心组件,嵌入在 LRM 的推理流程中:
-
智能体式检索增强生成 (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(i−1)),其中 I I I 是任务指令, q q q 是原始问题, R ( i − 1 ) R^{(i-1)} R(i−1) 是第 i i i 次搜索前的所有推理步骤。
-
文档内推理 (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(i−1) 中与当前搜索相关的部分)。
-
它首先会生成一个对文档的中间分析步骤 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>) 中,并插入到主推理链中。
-
在给定任务指令 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,a∣I,q)=t=1∏TrP(Rt∣R<t,I,q,{rfinal(j)}j≤idx(t))⋅t=1∏TaP(at∣a<t,R,I,q)
该公式将生成推理过程和生成答案视为两个相继的阶段。
- 第一阶段 (推理过程生成,右侧第一部分):模型逐步构建推理链。在每一步,它都会参考之前的思考、问题、指令,以及此时此刻通过 Search-o1 机制获取并精炼的外部知识。外部知识的引入是动态的,取决于推理到哪一步以及模型认为何时需要搜索。
- 第二阶段 (答案生成,右侧第二部分):一旦推理过程完成,模型基于这个完整的推理过程、问题和指令来逐步生成最终答案。
这里:
- 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)}j≤idx(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. 优势
- 自主知识补充: LRM 能在需要时主动获取外部知识,而不是依赖预训练时的静态知识。这对于解决知识密集型、需要最新信息的任务至关重要。
- 推理连贯性: “文档内推理”模块。它避免了原始检索文档的冗余和噪声对 LRM 思考过程的干扰,确保了外部知识能以一种“消化吸收后”的形态融入推理链。
- 提升可靠性: 通过引入外部知识来源,有望减少模型的“幻觉”和臆断,使推理过程更可信。
- 适应复杂推理: 与一次性 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 的性能能够得到提升 (在一定范围内),说明其“文档内推理”模块能有效利用更多信息源。