翻译:Search-o1: Agentic Search-Enhanced Large Reasoning Models
Search-o1 框架通过将外部知识检索无缝集成到推理过程中,解决了大型推理模型(LRMs)的知识不足问题,同时保持了链式思维的一致性。如图 2 所示,我们对三种方法进行了比较分析:普通推理、代理检索增强生成(RAG)和我们提出的 Search-o1 框架。普通推理模式:考虑图 2(a) 中的例子,任务涉及确定三步化学反应最终产物中的碳原子数量。普通推理方法在遇到知识缺口(例如“反式肉桂醛的结构
Search-o1: 增强型大推理模型的代理搜索框架
Search-o1: Agentic Search-Enhanced Large Reasoning Models

摘要
大型推理模型(LRMs),如 OpenAI-o1,通过大规模强化学习展现了令人印象深刻的大步推理能力。然而,其扩展的推理过程常常因知识不足而受到限制,导致频繁的不确定性以及潜在的错误。
为了解决这一局限性,我们引入了 Search-o1,一个结合代理检索增强生成(RAG)机制和 Reason-in-Documents 模块以优化检索文档的框架。Search-o1 将代理搜索工作流集成到推理过程中,在 LRMs 遇到不确定的知识点时动态检索外部知识。此外,由于检索到的文档通常冗长,我们设计了一个独立的 Reason-in-Documents 模块,在将信息注入推理链之前对其进行深度分析,从而最小化噪声并保持连贯的推理流程。
在科学、数学和编程等复杂推理任务以及六个开放域问答基准上的广泛实验表明,Search-o1 表现优异。这种方法增强了 LRMs 在复杂推理任务中的可信度和适用性,为更可靠、更多样化的智能系统铺平了道路。代码可在 https://github.com/sunnynexus/Search-o1 获取。
1 引言
近期出现的大型推理模型(LRMs),例如 OpenAI 的 o1 [22]、QwenQwQ [54] 和 DeepSeek-R1 [7],通过大规模强化学习培养出了令人印象深刻的长序列逐步推理能力,为解决复杂的推理问题提供了有前景的解决方案 [46, 31, 59, 84, 73, 74, 67]。这一进展激发了一系列基础性努力,旨在探索和复现类似 o1 的推理模式,以将其应用扩展到更广泛的模型中 [49, 19, 77, 80, 71, 25, 45]。
值得注意的是,类似 o1 的推理模式通过隐式分解复杂问题,引导 LRMs 进行更慢的思考过程 [6, 61],生成一条长的内部推理链,并逐步发现合适的解决方案。尽管这一特性增强了推理的逻辑一致性和可解释性,但扩展的思维链可能导致过度思考 [4] 和知识不足的风险增加 [60, 51, 2],任何知识缺口都可能传播错误并破坏整个推理链 [79, 40, 44, 41]。为了解决这一限制,我们进行了初步实验,评估了 LRMs 因知识缺口解码出不确定词汇的频率。![![[Pasted image 20250328120856.png]]](https://i-blog.csdnimg.cn/direct/838d277a82d943ccaa428895e99c53e2.png)
如图 1 所示,扩展的思考过程导致 LRM 在具有挑战性的推理问题中频繁解码大量不确定术语,“或许”一词平均每次推理过程中出现超过 30 次。值得注意的是,这些问题的高度专业化也使手动验证推理变得复杂,通常会带来显著的成本 [63]。因此,自动补充类似 o1 推理过程所需的知识已成为一项重大挑战,限制了 LRMs 在实现普遍可信推理方面的进展。
为了阐明这一问题,我们的核心动机是通过自主检索增强具备类似 o1 推理模式的 LRMs。我们提出了 Search-o1,它将 LRMs 的推理过程与两个核心组件相结合:代理检索增强生成(RAG)机制和知识精炼模块。该设计旨在使 LRMs 能够将代理搜索工作流集成到推理过程中,在需要时按需检索外部知识以支持逐步推理,同时在整个过程中保持一致性。![![[Pasted image 20250328120827.png]]](https://i-blog.csdnimg.cn/direct/276c0b314f944964b49b7dc6a197aa31.png)
具体来说,我们在图 1 中的结果显示,传统的面向问题的 RAG 技术并不能有效弥补知识缺口(标准 RAG 与直接推理相比)。这一发现符合人类直觉,因为标准 RAG 仅在问题导向的方式下检索一次相关知识,而在复杂推理场景中每个步骤所需的知识通常是多样化和多样的 [83, 41, 11]。与之不同,Search-o1 采用了一种代理 RAG 技术,指导模型在面对知识短缺时主动解码搜索查询,从而触发检索机制以获取相关的外部知识。得益于这种设计,我们的检索机制可以在单次推理会话中多次触发和迭代,满足各种推理步骤的知识需求。
为了有效地将检索到的知识整合到 LRM 的推理过程中,我们在实际实验中进一步发现了在直接将检索到的文档纳入推理链时的两个关键挑战:(1) 检索文档中的冗余信息。检索到的文档通常冗长且包含冗余信息,直接输入它们可能会破坏推理的原始连贯性,甚至引入噪声 [62, 72, 26]。(2) 理解长文档的能力有限。大多数 LRMs 在预训练和微调阶段专注于复杂推理任务,这导致了对其通用能力的部分灾难性遗忘 [39, 10],最终限制了它们对检索文档的长上下文理解能力。
为了解决这些挑战,我们引入了 Reason-in-Documents 模块,该模块独立于主推理链运行。该模块首先根据当前搜索查询和之前的推理步骤对检索到的文档进行深入分析,然后生成能够无缝融入先前推理链的精炼信息。
总之,我们的贡献如下:
- 我们提出了 Search-o1,这是首个将代理搜索工作流集成到 LRM 类似 o1 推理过程中的框架,以实现自主知识补充。
- 为了在推理过程中有效整合外部知识,Search-o1 将推理过程与代理 RAG 机制和知识精炼模块相结合。这种设计使 LRM 能够按需检索外部知识,同时保持原始逻辑流,将其无缝融入推理链中。
- 在五个复杂推理领域和六个开放域问答基准上,我们证明了 Search-o1 在推理领域取得了显著的性能,同时在通用知识方面也实现了实质性改进。进一步的定量分析确认了其效率和可扩展性,为 LRMs 的可信推理提供了实用指导。
2 相关工作
大型推理模型
大型推理模型专注于通过利用扩展的推理步骤来增强测试时的性能,与传统的大规模预训练模型依靠在训练期间增加模型大小或扩展训练数据形成对比 [17, 66, 50, 85, 76]。研究表明,测试时扩展可以提高较小模型在复杂任务上的推理能力 [15, 75]。最近,像 OpenAI-o1 [22]、Qwen-QwQ [54] 和 DeepSeekR1 [7] 这样的模型明确展示了链式思维推理 [59],模仿了人类在数学、编程等领域的问题解决方法。
为了实现类似 o1 的推理能力,研究人员探索了多种方法。一些方法将策略和奖励模型与蒙特卡洛树搜索(MCTS)结合 [25],但这并未将推理内化到模型中。其他研究在训练期间故意在推理路径中引入错误,部分地内化了这些能力 [49, 71]。此外,蒸馏训练数据已被证明可以增强模型的类似 o1 推理技能 [45]。类似 o1 的推理范式在包括视觉语言推理 [65, 11, 48, 69]、代码生成 [81, 32]、医疗保健 [3] 和机器翻译 [57] 等多样化领域中表现出强大的性能。然而,这些方法受限于它们对静态参数化模型的依赖,在内部知识不足时无法利用外部世界知识。
检索增强生成
检索增强生成(RAG)引入了检索机制,以解决生成模型中静态参数的局限性,允许访问外部知识以解决更复杂的问题 [30, 82, 35, 86]。该领域的先进研究从多个方面增强了 RAG 系统,包括检索的必要性 [53]、查询预处理 [43, 58]、检索文档压缩 [64]、去噪 [42, 12]、精炼 [24, 27, 88]、指令跟随 [9, 8, 87] 等。此外,一些研究探索了端到端模型训练以实现 RAG 系统 [1, 36, 33, 34] 和基于知识图谱的 RAG 系统 [14, 37]。
最近,代理 RAG 系统赋予模型自主决定何时以及检索什么知识的能力,展示了增强的规划和问题解决能力 [5, 56, 70]。还有研究将基于代理的系统与 MCTS 结合,优化复杂工作流,利用检索器和其他工具完成任务 [78]。然而,现有的 RAG 方法尚未结合类似 o1 模型的强大推理能力,限制了其在解决复杂任务时进一步提升系统性能的潜力。
3 方法论
3.1 问题公式化
我们考虑一个需要多步推理和检索外部知识以得出解决方案的复杂推理任务。目标是为每个问题qqq生成一个综合解决方案,包括逻辑推理链RRR和最终答案aaa。在这项工作中,我们使推理模型能够在推理过程中利用外部知识源。具体来说,我们在解决问题的过程中考虑三个主要输入:任务指令III、问题qqq和外部检索文档DDD。其中,III提供了推理任务的整体描述,qqq是需要回答的具体复杂问题,DDD包含从相关知识库中动态检索的背景知识。
目标是设计一种有效的推理机制,将III、qqq和DDD整合起来,生成连贯的推理链RRR和最终答案aaa。这可以形式化为映射(I,q,D)→(R,a)(I, q, D) \to (R, a)(I,q,D)→(R,a)。推理序列和最终答案的生成可以表示为:
P(R,a∣I,q,D)=∏t=1TrP(Rt∣R<t,I,q,D<t)⋅∏t=1TaP(at∣a<t,R,I,q), P (R, a | I, q, D) = \prod_{t=1}^{T_r} P (R_t | R_{<t}, I, q, D_{<t}) \cdot \prod_{t=1}^{T_a} P (a_t | a_{<t}, R, I, q), P(R,a∣I,q,D)=t=1∏TrP(Rt∣R<t,I,q,D<t)⋅t=1∏TaP(at∣a<t,R,I,q),
其中TrT_rTr是推理序列RRR的标记数。位置ttt的标记为RtR_tRt,R<tR_{<t}R<t表示在位置ttt之前生成的所有标记。D≤tD_{\leq t}D≤t表示在推理链中截至标记ttt检索到的所有文档。同样,TaT_aTa是答案序列aaa的长度,ata_tat是位置ttt的标记,a<ta_{<t}a<t表示在位置ttt之前生成的所有答案标记。
3.2 Search-o1 框架概述
Search-o1 框架通过将外部知识检索无缝集成到推理过程中,解决了大型推理模型(LRMs)的知识不足问题,同时保持了链式思维的一致性。![![[Pasted image 20250328121115.png]]](https://i-blog.csdnimg.cn/direct/12c4add124664c3db93a01672c6054c1.png)
如图 2 所示,我们对三种方法进行了比较分析:普通推理、代理检索增强生成(RAG)和我们提出的 Search-o1 框架。
-
普通推理模式:考虑图 2(a) 中的例子,任务涉及确定三步化学反应最终产物中的碳原子数量。普通推理方法在遇到知识缺口(例如“反式肉桂醛的结构”)时表现不佳。在没有准确信息的情况下,模型必须依赖假设,可能导致后续推理步骤中出现连锁错误。
-
代理 RAG:为了弥合推理过程中的知识缺口,我们构建了代理 RAG 机制(图 2(b)),使模型能够在需要时自主检索外部知识。当不确定性出现时(例如关于化合物结构),模型会生成有针对性的搜索查询(例如“反式肉桂醛的结构”)。然而,直接插入检索到的文档通常冗长且包含无关信息,可能会破坏推理流程并损害连贯性。
-
Search-o1:我们的 Search-o1 框架(图 2©)通过结合 Reason-in-Documents 模块扩展了代理 RAG 机制。该模块将检索到的文档浓缩为聚焦的推理步骤,整合外部知识的同时保持推理链的逻辑流。它考虑当前搜索查询、检索到的文档和现有推理链,生成连贯的步骤。这个迭代过程持续进行,直到得出最终答案。以下部分详细解释了代理 RAG、Reason-in-Documents 和 Search-o1 推理过程。
3.3 代理检索增强生成机制
代理 RAG 机制是 Search-o1 框架的关键组件,赋予推理模型在推理过程中自主决定何时检索外部知识的能力。该机制允许模型自行决定是继续生成推理步骤还是启动检索步骤。详细的模型说明见附录 A.1。
在生成推理链RRR的过程中,模型可能会间歇性地生成封装在特殊符号 <|begin_search_query|> 和 <|end_search_query|> 之间的搜索查询qsearch(i)q_{search}^{(i)}qsearch(i),其中iii索引第iii次搜索步骤。每个搜索查询基于推理过程的当前状态和先前检索到的知识生成。每个搜索查询的生成可以表示为:
P(qsearch(i)∣I,q,R(i−1))=∏t=1Tq(i)P(qsearch,t(i)∣qsearch,<t(i),I,q,R(i−1)), P (q_{search}^{(i)} | I, q, R^{(i-1)}) = \prod_{t=1}^{T_q^{(i)}} P (q_{search,t}^{(i)} | q_{search,<t}^{(i)}, I, q, R^{(i-1)}), P(qsearch(i)∣I,q,R(i−1))=t=1∏Tq(i)P(qsearch,t(i)∣qsearch,<t(i),I,q,R(i−1)),
其中Tq(i)T_q^{(i)}Tq(i)是第iii次搜索查询的长度,qsearch,t(i)q_{search,t}^{(i)}qsearch,t(i)表示第iii次搜索查询中第ttt步生成的标记,R(i−1)R^{(i-1)}R(i−1)表示第iii次搜索步骤之前的所有推理步骤,包括搜索查询和搜索结果。
一旦在推理序列中检测到新的搜索查询特殊符号,我们将暂停推理过程,并提取搜索查询qsearch(i)q_{search}^{(i)}qsearch(i)。检索函数 Search 被调用以获取相关文档:
D(i)=Search(qsearch(i)), D^{(i)} = \text{Search}(q_{search}^{(i)}), D(i)=Search(qsearch(i)),
其中D(i)={d1(i),d2(i),…,dki(i)}D^{(i)} = \{d_1^{(i)}, d_2^{(i)}, \ldots, d_{k_i}^{(i)}\}D(i)={d1(i),d2(i),…,dki(i)}表示为第iii次搜索查询检索到的相关文档集合。检索到的文档D(i)D^{(i)}D(i)随后被注入推理链R(i−1)R^{(i-1)}R(i−1)中,位于特殊符号 <|begin_search_result|> 和 <|end_search_result|> 之间,使推理模型能够利用外部知识继续推理过程。
这种代理机制使模型能够动态高效地整合外部知识,同时避免因过多或无关检索结果造成的信息过载,保持推理过程的一致性和相关性。
3.4 通过 Reason-in-Documents 进行知识精炼
虽然代理 RAG 机制解决了推理中的知识缺口问题,但直接插入完整文档可能会因其长度和冗余而破坏连贯性。为了解决这个问题,Search-o1 框架包含了一个知识精炼模块,通过使用原始推理模型的单独生成过程选择性地将相关且简洁的信息整合到推理链中。该模块处理检索到的文档以满足模型的特定推理需求,将原始信息转化为精炼且相关性强的知识,同时保持主推理链的连贯性和逻辑一致性。
Reason-in-Documents 的精炼指南详见附录 A.1。这些指南指示模型根据之前的推理步骤、当前搜索查询和搜索网页的内容分析检索到的网页。目标是提取直接有助于推进原始问题推理过程的相关且准确的信息,确保与现有推理链无缝整合。对于每次搜索步骤iii,令R(<i)R_{(<i)}R(<i)表示在第iii次搜索查询之前累积的推理链。给定R(<i)R_{(<i)}R(<i)、当前搜索查询qsearch(i)q_{search}^{(i)}qsearch(i)和检索到的文档D(i)D^{(i)}D(i),知识精炼过程分为两个阶段:首先生成中间推理序列rdocs(i)r_{docs}^{(i)}rdocs(i)分析检索到的文档,然后基于此分析生成精炼知识rfinal(i)r_{final}^{(i)}rfinal(i)。中间推理序列rdocs(i)r_{docs}^{(i)}rdocs(i)的生成可以表示为:
P(rdocs(i)∣R(<i),qsearch(i),D(i))=∏t=1Td(i)P(rdocs,t(i)∣rdocs,<t(i),R(<i),qsearch(i),D(i)), P (r_{docs}^{(i)} | R_{(<i)}, q_{search}^{(i)}, D^{(i)}) = \prod_{t=1}^{T_d^{(i)}} P (r_{docs,t}^{(i)} | r_{docs,<t}^{(i)}, R_{(<i)}, q_{search}^{(i)}, D^{(i)}), P(rdocs(i)∣R(<i),qsearch(i),D(i))=t=1∏Td(i)P(rdocs,t(i)∣rdocs,<t(i),R(<i),qsearch(i),D(i)),
其中Td(i)T_d^{(i)}Td(i)是中间推理序列的长度,rdocs,t(i)r_{docs,t}^{(i)}rdocs,t(i)表示第ttt步的标记。然后基于此分析生成精炼知识rfinal(i)r_{final}^{(i)}rfinal(i):
P(rfinal(i)∣rdocs(i),R(<i),qsearch(i))=∏t=1Tr(i)P(rfinal,t(i)∣rfinal,<t(i),rdocs(i),R(<i),qsearch(i)), P (r_{final}^{(i)} | r_{docs}^{(i)}, R_{(<i)}, q_{search}^{(i)}) = \prod_{t=1}^{T_r^{(i)}} P (r_{final,t}^{(i)} | r_{final,<t}^{(i)}, r_{docs}^{(i)}, R_{(<i)}, q_{search}^{(i)}), P(rfinal(i)∣rdocs(i),R(<i),qsearch(i))=t=1∏Tr(i)P(rfinal,t(i)∣rfinal,<t(i),rdocs(i),R(<i),qsearch(i)),
其中Tr(i)T_r^{(i)}Tr(i)是精炼知识序列的长度,rfinal,t(i)r_{final,t}^{(i)}rfinal,t(i)表示第ttt步的标记。
精炼知识rfinal(i)r_{final}^{(i)}rfinal(i)随后被整合到推理链R(i)R^{(i)}R(i)中,使模型能够继续生成连贯的推理步骤,同时访问外部知识。
P(R,a∣I,q)=∏t=1TrP(Rt∣R<t,I,q,{rfinal(j)}j≤i(t))⋅∏t=1TaP(at∣a<t,R,I,q), P (R, a | I, q) = \prod_{t=1}^{T_r} P (R_t | R_{<t}, I, q, \{r_{final}^{(j)}\}_{j \leq i(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≤i(t))⋅t=1∏TaP(at∣a<t,R,I,q),
其中{rfinal(j)}j≤i(t)\{r_{final}^{(j)}\}_{j \leq i(t)}{rfinal(j)}j≤i(t)表示截至第i(t)i(t)i(t)次搜索步骤之前的所有精炼知识。这里i(t)i(t)i(t)表示与当前推理步骤ttt对应的搜索步骤索引。这种精炼知识整合确保了每个推理步骤都能访问相关外部信息,同时保持推理过程的简洁性和焦点。![![[Pasted image 20250328121630.png]]](https://i-blog.csdnimg.cn/direct/ae67b4bc1c854c829b749ff13ec3fe7c.png)
3.5 Search-o1 推理过程
单一问题的推理逻辑。对于每个问题,Search-o1 推理从初始化推理序列开始,将任务指令III与具体问题qqq拼接在一起。随着推理模型MMM生成推理链RRR,它可能会生成封装在特殊符号 <|begin_search_query|> 和 <|end_search_query|> 之间的搜索查询。在检测到 <|end_search_query|> 符号时,提取相应的搜索查询qsearchq_{search}qsearch,触发检索函数 Search 以获取相关外部文档DDD。这些检索到的文档与 Reason-in-Documents 指令IdocsI_{docs}Idocs和当前推理序列RRR一起由 Reason-in-Documents 模块处理。该模块将原始文档精炼为简洁且相关的信息rfinalr_{final}rfinal,然后将其无缝整合回推理链RRR中,位于符号 <|begin_search_result|> 和 <|end_search_result|> 之间。这个迭代过程确保推理模型在保持连贯性和逻辑一致性的同时整合必要的外部知识,生成综合推理链RRR和最终答案aaa。
批量推理机制。为了高效地同时处理多个问题,Search-o1 框架采用了批量推理机制,优化了标记生成和知识精炼。最初,通过将任务指令III与批次QQQ中的每个问题qqq拼接,创建一组未完成的推理序列SSS。推理模型MMM然后并行生成所有序列SSS的标记,推进每个推理链,直到完成或需要外部知识检索。当在任何序列中识别出搜索查询时,提取相应的查询并通过 Search 函数以批处理方式检索相关文档DDD。这些文档随后由 Reason-in-Documents 模块集中精炼,为每个序列生成精炼知识rfinalr_{final}rfinal。精炼知识随后被插入各自的推理链中。完成的序列被移动到完成集FFF,而正在进行的序列仍留在SSS中以供进一步处理。通过利用生成和精炼步骤的并行处理,批量推理机制提高了系统在同时处理多个输入时的吞吐量。
4 实验
4.1 任务和数据集
本实验使用的评估包括以下两类:
具有挑战性的推理任务:
(1) GPQA [52] 是一个博士级别的科学多选问答数据集。问题由物理、化学和生物学领域的专家撰写。在主要实验中,我们使用了最高质量的 diamond 数据集,包含 198 个问题;在表 2 中,我们使用了更全面的扩展数据集,包含 546 个问题,以与人类专家的表现进行比较。
(2) 数学基准包括 MATH500 [38]、AMC2023 和 AIME2024。MATH500 包含来自 MATH 测试集 [16] 的 500 个问题。AMC2023 和 AIME2024 是中学数学竞赛,涵盖算术、代数、几何等,分别包含 40 和 30 个问题。在这三个数据集中,MATH500 和 AMC 相对简单,而 AIME 更具挑战性。
(3) LiveCodeBench [23] 是一个评估 LLM 编程能力的基准,包含简单、中等和困难难度的问题。它收集了最近发布的竞争平台上的编程问题,以避免数据污染。我们利用了 2024 年 8 月至 11 月的问题,共 112 个问题。
开放域问答任务:
(1) 单跳问答数据集:Natural Questions (NQ) [29] 包含来自真实 Google 搜索查询的问题,答案来自维基百科文章。TriviaQA [28] 是一个大规模数据集,包含来自琐事网站和比赛的问题,具有复杂的实体关系。
(2) 多跳问答数据集:HotpotQA [68] 是第一个需要跨多个维基百科段落进行推理的大规模数据集。2WikiMultihopQA (2WIKI) [18] 为多跳问题提供了明确的推理路径。MuSiQue [55] 包含 2-4 跳问题,基于五个现有的单跳数据集构建。Bamboogle [47] 收集了 Google 错误回答的复杂问题,以评估模型在各个领域的组合推理能力。
4.2 基线方法
我们将我们的方法与以下基线方法进行比较:
直接推理:这些方法利用模型的内部知识,不进行检索。开源模型包括 Qwen2.5-32B-Instruct [50]、Qwen2.5-Coder-32B-Instruct [20]、QwQ32B-Preview [54]、Qwen2.5-72B-Instruct [50] 和 Llama3.3-70B-Instruct [13]。闭源非专有模型包括 DeepSeek-R1-Lite-Preview [7]、OpenAI GPT-4o [21] 和 o1preview [22]。开源模型的结果基于我们的实现,而闭源模型的结果来源于其官方发布。
检索增强推理:这些方法检索外部信息以增强推理过程。我们考虑两种检索增强方法:(1) 标准 RAG:为原始问题检索前 10 篇文档,并将它们与问题一起输入模型进行推理和答案生成。(2) RAG Agent (RAgent):允许模型决定何时生成检索查询,详见第 3.3 节。为了管理检索文档的长度,受 ReAct [70] 启发,我们首先在推理期间检索前 10 个片段。模型然后决定在必要时获取哪些 URL 的完整文档。
4.3 实施细节
对于 Search-o1 中的骨干大型推理模型,我们使用了开源的 QwQ-32B-Preview [54]。对于生成设置,我们使用最大 32,768 个标记,温度为 0.7,top_p 为 0.8,top_k 为 20,重复惩罚为 1.05,适用于所有模型。对于检索,我们使用 Bing Web Search API,区域设置为 US-EN,检索文档的 top-k 设置为 10。我们使用 Jina Reader API 获取给定 URL 的网页内容。对于所有基于检索的方法,按照 [52] 的做法,我们采用后备策略,即在未提供最终答案时,使用直接推理的结果。对于未专门训练用于类似 o1 推理的基线模型,我们应用 Chain-of-Thought (CoT) [59] 提示进行推理,然后再生成答案。所有模型的详细说明见附录 A。所有实验均在八块 NVIDIA A800-80GB GPU 上进行。
4.4 具有挑战性的推理任务结果
![![[Pasted image 20250328122020.png]]](https://i-blog.csdnimg.cn/direct/d233a92bbfd546cd8a16054f93158e36.png)
主要结果。表 1 展示了 Search-o1 在复杂推理任务上的表现,主要结果如下:
- 无论是否使用检索增强,在无检索和检索增强两种设置下,大型推理模型 QwQ-32B-Preview 始终表现出优于传统指令调优 LLM 的性能。32B 参数的 QwQ 模型甚至在直接推理设置中超越了更大的 LLM,如 Qwen2.5-72B 和 Llama3.3-70B,展示了类似 o1 的长 CoT 方法在复杂推理中的有效性。
- RAgent-QwQ-32B 在大多数任务中超越了基于标准 RAG 的模型和直接推理的 QwQ-32B,这得益于其代理搜索机制,能够自主检索信息以补充每一步推理所需的知识。此外,我们发现非推理模型 Qwen2.5-32B 使用代理 RAG 在 GPQA 上的表现与标准 RAG 相当,但在数学和代码任务上表现下降。这表明普通 LLM 无法有效利用搜索作为工具来解决复杂推理任务。
- 我们的 Search-o1 在大多数任务中进一步超越了 RAgent-QwQ-32B,展示了 Reason-in-Documents 策略的有效性,通过整合外部知识,同时确保不影响原始推理的一致性。具体来说,在所有五个数据集的平均表现上,Search-o1 分别比 RAgent-QwQ-32B 和 QwQ-32B 高出 4.7% 和 3.1%,并显著优于非推理模型 Qwen2.5-32B 和 Llama3.3-70B,分别高出 44.7% 和 39.3%。
![![[Pasted image 20250328122118.png]]](https://i-blog.csdnimg.cn/direct/b3cc6b03c0b34d3db57867610903dfb5.png)
检索文档数量的扩展分析。在本实验中,我们分析了检索文档数量与性能变化的关系,如图 3 所示。我们的结果表明,Search-o1 能够有效利用不断增加的检索文档数量,从而在处理复杂推理任务时取得改进。我们还观察到,即使只检索一个文档,整体表现也能超越使用十个检索文档的直接推理和标准 RAG 模型,展示了代理搜索和 Reason-in-Documents 策略的有效性。
![![[Pasted image 20250328122138.png]]](https://i-blog.csdnimg.cn/direct/a9a6ce13971148bb9d66d2edaf187b2e.png)
与人类专家的比较。我们在 GPQA 扩展集的各个领域中将 Search-o1 的表现与人类专家进行比较。表 2 展示了来自物理、化学和生物学等不同学科的人类专家的评估。我们的 Search-o1 模型在总体表现(57.9)、物理学(68.7)和生物学(69.5)上均超越了人类专家,展示了在处理复杂推理任务中的优越能力。尽管 Search-o1 在化学子领域稍逊于化学家(40.7 vs. 72.6),但它在多个领域的总体表现上仍然具有竞争力,特别是在跨领域表现上媲美甚至超越专家水平。这突显了 Search-o1 在利用文档检索和推理实现跨领域性能方面的有效性。
4.5 开放域问答任务结果
![![[Pasted image 20250328122216.png]]](https://i-blog.csdnimg.cn/direct/a18f416f8f764cec91ef33c3c7323609.png)
除了 LRMs 擅长的推理任务外,我们还探索了 Search-o1 在开放域问答任务中的表现。表 3 展示了总体结果。关键观察如下:
- 对于不使用检索的直接推理,LRM QwQ-32B 的表现总体上与非推理 LLM Qwen2.5-32B 相似,在所有 QA 数据集上的平均 EM 略有下降(31.3 vs. 30.7)。这表明 LRMs 在开放域问答任务上的表现不如在推理任务上那么强。
- 当使用检索增强推理时,检索显著提高了推理和非推理模型在所有任务中的表现,表明模型在这些任务中存在知识缺口。此外,对于 QwQ-32B 模型,代理 RAG 在多跳问答任务上的平均 EM 比标准 RAG 提高了 23.2%,展示了我们代理 RAG 策略在基于知识的多跳问答中的有效性。然而,我们也观察到单跳任务的表现没有显著变化(平均 EM 为 47.8 vs. 47.6),因为这些问题只需要从单一知识点中获取信息,无需多次检索。这也验证了代理搜索机制能够更好地释放 LRMs 在更复杂和具有挑战性的推理任务中的潜力。
- 对于我们的 Search-o1,我们发现它在多跳任务中通常优于所有基线。具体来说,在平均 EM 指标上,我们的 Search-o1 分别比 RAG-QwQ-32B 和 RAgent-QwQ-32B 高出 29.6% 和 5.3%,展示了 Reason-in-Documents 策略在复杂问答任务中的有效性。这进一步强调了保持外部知识与逻辑推理链一致性的重要性。
5 结论
在这项工作中,我们提出了 Search-o1,一个通过结合代理检索增强生成机制和 Reason-in-Documents 模块来解决大型推理模型(LRMs)固有知识不足问题的框架。我们的方法使 LRMs 能够自主检索并在推理过程中无缝整合外部知识,从而增强其长步推理能力的准确性和一致性。在科学、数学和编程等多样化的复杂推理任务以及多个开放域问答基准上的综合实验表明,Search-o1 始终优于现有的检索增强和直接推理方法。值得注意的是,Search-o1 不仅在处理复杂推理挑战时超越了基线模型,还在特定领域达到了与人类专家相当或更高的表现水平。这些发现突显了 Search-o1 在显著提高 LRMs 可靠性和多样性方面的潜力,为在复杂问题解决场景中实现更值得信赖和高效的智能系统铺平了道路。
Appendix
A Instruction Templates
A.1 Instructions for Search-o1
![![[Pasted image 20250328122258.png]]](https://i-blog.csdnimg.cn/direct/1a264b25f25b46b692a290c004f6fc25.png)
![![[Pasted image 20250328122318.png]]](https://i-blog.csdnimg.cn/direct/f2d413cb715b46a68ceb7640b683c426.png)
A.2 Instructions for Standard RAG
![![[Pasted image 20250328122345.png]]](https://i-blog.csdnimg.cn/direct/87b84b523e4f47ae9bf56273f0925c79.png)
A.3 Instructions for RAG Agent
![![[Pasted image 20250328122402.png]]](https://i-blog.csdnimg.cn/direct/e0584f4e26654e918dd1f0bcadf38183.png)
A.4 Task-Specific Instructions
![![[Pasted image 20250328122430.png]]](https://i-blog.csdnimg.cn/direct/749b2a5347f548ef86b700e922f262ba.png)
![![[Pasted image 20250328122437.png]]](https://i-blog.csdnimg.cn/direct/07a4e0a495d2466a9174e97423181fb5.png)
![![[Pasted image 20250328122447.png]]](https://i-blog.csdnimg.cn/direct/4550d04bc14f4e84bbaf2a2093171a93.png)
![![[Pasted image 20250328122453.png]]](https://i-blog.csdnimg.cn/direct/deff5a0878124755952449f2f0644339.png)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)