[EMNLP 2025] Search-o1: Agentic Search-Enhanced Large Reasoning Models¶
- 论文地址:https://arxiv.org/abs/2501.05366v1
- Github 仓库:https://github.com/sunnynexus/Search-o1
- 项目主页:https://search-o1.github.io/
原先工作的 Problem:
- **Knowledge insufficiency 导致错误传播. ** LRM 可以长时间推理,但参数知识不能覆盖每一个中间步骤;一处事实猜错,会影响后续推理. Figure 1 以 GPQA 上的 “perhaps”“alternatively”等词频展示 model-expressed uncertainty;这些词频是观察性信号,不是经校准的置信度指标.
- **问题级的一次检索不能覆盖步骤级的知识需求. ** Standard RAG 只对原问题检索一次,后续中间实体与子问题往往还没有出现,无法提前完整召回.
- **原始文档回填会干扰长推理链. ** 网页冗长、含无关内容;论文还提出,面向 reasoning 的对齐可能影响一般长上下文能力. 因此,需要在主推理链之外先理解文档,再注入有用信息.
🖼️ [Figure 1:GPQA diamond 上的 model-expressed uncertainty 与不同检索策略的词频对比;建议复用原文第 2 页]
Search-o1 是一个无需额外训练的推理时搜索增强框架,由三个功能环节构成:
- Main reasoning:使用 QwQ-32B-Preview 推理,并自主决定是否发起搜索.
- Agentic RAG:解析模型生成的搜索标记,执行 Web Search 和网页读取.
- Reason-in-Documents:用同一 reasoning model 独立分析文档,输出当前步骤所需的精炼信息.
构建方法论(Methodology)¶
Overview¶
Figure 2 从左到右比较三种路径:直接推理遇到知识缺口后继续猜测;加入 Agentic RAG 后可以补知识,但长文档仍可能打断推理;Search-o1 则进一步将“阅读搜索结果”移到独立生成过程. 主模型先根据问题、已有推理和历史搜索结果生成 query,系统暂停主链并检索网页. Reason-in-Documents 同时接收 previous reasoning steps、current search query 与 searched web pages,分析哪些信息能推进当前问题,输出 Final Information. 系统仅将该输出插回主链,再继续推理,直到回答或再次搜索.
这里的关键不是通用网页摘要,而是以当前推理状态为条件的证据精炼:相同网页在不同推理阶段可能需要不同信息. 两个生成过程承担不同职责,但使用同一原始模型,并非论文额外训练的两个 agent,也没有新增 reward model. 独立阅读隔离的是文档分析过程与原始长文档,不是将主推理历史完全丢弃.
🖼️ [Figure 2:Vanilla Reasoning、Agentic RAG 与 Search-o1 的主架构对比;原文第 4 页]
1. Agentic RAG & Multi-step Planning¶
模型输出以下文本标记来请求检索:
系统检测到结束标记后暂停生成,提取 query 并调用搜索. 检索时机由 prompt 引导的模型生成行为决定,没有单独训练 uncertainty detector,也没有设定 “perhaps” 词频阈值触发搜索.
第 i 次 query 的条件分布为:
其中 I 是 task instruction,q 是原问题,R 是此前包含搜索交互的推理历史,T 是 query token 长度. 这是 autoregressive generation 的形式化描述,不是新的训练目标.
2. Retrieval Strategy & Index Design¶
D 是当前 query 的 top-k 文档. 实验使用 Bing Web Search API,region 为 US-EN,默认 k=10;Jina Reader API 读取网页内容. 没有自建 KG、图遍历或新的 dense retriever/index 学习.
对照中的 Standard RAG 对原问题一次取 top-10 文档;RAgent 则先取 top-10 snippets,再由模型决定读取哪些 URL 的完整网页. 因此,RAgent 与 Search-o1 的对比并非只开关精炼模块的完全相同工作流.
3. Memory & Long-Context Management¶
Reason-in-Documents 的独立调用先生成文档分析 \(r_{\text{docs}}\),再输出精炼结果 \(r_{\text{final}}\):
\(R^{(<i)}\) 是当前搜索前的推理历史. 上述表达为原文 Eq. 4–5 的简写. 系统提取 Final Information,而不是把完整 r_docs 回填主链;没有有用信息时,prompt 要求输出 No helpful information found..
精炼结果以以下格式回填:
这可以缩减主链接收的噪声,但不是历史推理链的整体压缩算法:独立阅读仍需处理文档及 previous reasoning steps,论文也未指定固定摘要 token budget.
4. Test-Time Compute & Adaptive Retrieval¶
系统循环执行“推理 → 搜索 → 独立阅读 → 回填 → 继续推理”. Algorithm 1 将未完成序列保存在 S 中,遇 EOS 的序列移入 F;需要搜索的序列组成独立阅读 batch,处理完再恢复生成.
检索次数可随问题变化,但 prompt 存在最大搜索次数限制.