知乎:https://zhuanlan.zhihu.com/p/1892489650469323191 (已授权)大家好,我想通过这个系列的文章,与大家分享如何复现Deep Research的一些关键洞见。在上一篇关于Agent的博客-25年什么样的 Agent 会脱颖而出:简单胜于复杂中,我提到:
OpenAI并不是简单地在GPT基础上套壳(套壳指的是在 GPT 模型的基础上,通过定制化的 prompt 以及固定的代码流程来实现某功能)。相反,OpenAI 基于 GPT-o3,采用端到端强化学习+高质量训练数据的方式训练了一个全新的模型,能够完全在内部完成搜索任务
这给出了一个总体思路,但要真正复现Deep Research,我们需要更多细节 。本系列将尝试从end-to-end训练的角度,循序渐进地探讨这个问题。
首先,什么是Deep Research?它是一个深度搜索和调研的Agent ,能在5-30分钟内出一份完整的调研报告 。注意,它强调"深度搜索+调研 ",而非单纯的深度搜索(Deep Search)。
Deep Research的价值不容小觑。正如与真格戴雨森聊 Agent:各行业都会遭遇 “李世石时刻”,Attention is not all you need所言:
要是让实习生做,首先我不可能半夜两点要求他五分钟内给我一份报告,而且他做出来的报告基本没有 Deep Research 好
昨天我就在想,要是从大街上随便找十个人,至少九个已经比不上 Deep Research 了。因为 Deep Research 能在几分钟内,针对任何你需要的话题,给出一份在我看来达到在较好公司工作一两年的白领水平的研究报告。所以我觉得 AGI 已不再是一个科幻概念。现在在收集信息、整理信息这类任务上,AI 已经超过了大多数人
目前市面上已有多个Deep Research的复现版本,包括Google的Deep Research、Grok的DeepSearch和DeeperSearch、Perplexity的DeepResearch、智谱前几天的AutoGLM沉思版、 Genspark、秘塔的深度研究模式。开源的项目也有不少,
https://github.com/huggingface/smolagents/tree/main/examples/open_deep_research https://github.com/jina-ai/node-DeepResearch https://github.com/dzhng/deep-research https://github.com/nickscamara/open-deep-research https://github.com/theworldofagents/Agentic-Reasoning 根据实测,大公司的产品在交互和研究质量上普遍更胜一筹,如来自卡神@卡兹克的实际体验后的分享。OpenAI的Deep Research虽然耗时最长,但质量也最高; 其次是Grok的DeeperSearch。国内产品如豆包的深度思考和秘塔,效率较高但质量稍逊。
本系列将先聚焦Deep Search 和end-to-end 训练,循序渐进地展开:
本文先聚焦在 Deep Search。要复现Deep Research,首先要把搜索(Search)做好。给定用户问题,Agent要学会从浏览器或API中搜集相关知识。没有扎实的Search能力,就难以实现Research。 end-to-end的模型被公认为上限更高的完成方式,因此我们将重点研究 end-to-end复现Deep Search的关键技术洞见。 本系列文章将分三部分展开:
上篇(本文) : 聚焦Deep Search的关键技术和端到端训练方法中篇 : 探讨Jina AI、WebThinker 等中间形态的Deep Research实现下篇 : 分析OpenAI、Gemini、Genspark等产品级Deep Research的技术路径希望通过这个系列,能与大家一同探索如何从0到1复现这项令人兴奋的前沿技术。欢迎交流讨论!
Deep Search:搜索的本质与难点 在深入研究Deep Research前,我们必须理解:Deep Search是Deep Research的基石 。 搜索的本质在于找到全面和直接的信息。根据需求和场景,我们可以采用不同的实现方式:
API调用 :使用关键词调用外部搜索API(如Google、Bing)虚拟浏览器 :通过Operator等工具模拟人类浏览网页搜索任务的复杂度也呈不同等级递增,如单跳搜索"哪吒2的导演是谁"、多跳搜索"哪吒 2 的导演还导演过什么电影?"、偏向 deep research的搜索"研究《哪吒2》在国际市场的接受度与文化输出效果,分析其对提升中国文化软实力的贡献"。
多跳搜索和深度研究型搜索的关键在于模仿人的思维链搜索 :
基于已获取的信息,进行下一轮推理,确定进一步的搜索方向 不断迭代这个"推理→搜索→推理"的循环,直到收集足够信息 在这个过程中,每次搜索都建立在前一次搜索结果的基础上,形成一个连贯的推理链。 这就是为什么Deep Search是Deep Research的基石 ——只有掌握了这种迭代式、思维链式的搜索能力,才能支撑起完整的深度研究。
论文 1: 《Search-o1: Agentic Search-Enhanced Large Reasoning Models》 Search-o1 是最近比较火的 WebThinker 项目的前身,它提出了一种新颖的方法,让大型语言模型在推理过程中能够主动进行网络搜索,从而增强其推理能力。与传统检索增强生成(RAG)系统相比,Search-o1 有两个关键创新点:
核心组件一: 主动式检索增强生成机制 传统 RAG 通常是一次性的:在回答问题前进行一次检索,将检索结果放入上下文中。而 Search-o1 实现了动态的、多步骤的 检索机制:
当遇到知识不确定的情况时,模型会自动生成搜索查询,格式为<|begin_search_query|>搜索词<|end_search_query|> 搜索结果被包装在<|begin_search_result|>检索到的内容<|end_search_result|>标记中返回给模型 模型继续推理,并可以根据需要多次重复这一过程。 Prompt 如下 Search-o1的核心组件二: Reason-in-Documents模检索有一个很严重的问题,就是检索出来的内容可能很杂乱和很长,而现在的大模型处理长文本性能会下降,因此,论文剔除,用另外一个 Reason-in-Documents,把检索到的内容进行精炼,再放入到原有推理链中,从而缓解检索文档中存在冗余信息和LLM 处理长文档的局限性。Prompt 如下
Search-o1与传统 RAG 的区别 检索触发机制 :传统 RAG 是静态的、预先定义的;Search-o1 是动态的、由模型主动触发的检索频率 :传统 RAG 通常进行一次性检索;Search-o1 支持多次、迭代式检索内容整合 :传统 RAG 直接插入大量文档;Search-o1 经过精炼后仅保留关键信息推理连贯性 :Search-o1 保持了推理流的连贯性,避免了传统 RAG 可能导致的推理中断示例说明 以下图论文中的示例为例,详细说明整个工作流程:
模型生成:<|begin_search_query|> reaction of grignard reagent with aldehyde <|end_search_query|> Reason-in-Documents 模块分析搜索结果,提取关键信息 精炼后的内容被包装在<|begin_search_result|>提炼后的检索内容<|end_search_result|>中 论文 2: 《DeepRetrieval: Hacking Real Search Engines and Retrievers with Large Language Models via Reinforcement Learning》 用强化学习来训练query改写
query改写已被证实是检索流程中的关键步骤。当用户提交问题时,大型语言模型(LLM)通常会对其进行重新表述(称为增强查询),然后再执行检索。DeepRetrieval 采用创新方法,利用强化学习(RL)而非传统的监督式微调(SFT)来优化这一关键步骤。
DeepRetrieval的突出之处在于它能够通过"试错"方式直接学习,使用检索指标作为奖励,无需昂贵的监督数据。这种方法使模型能够针对实际性能指标进行优化,而不仅仅是模仿人工编写的查询。
在多种检索任务中进行了实验 论文中值得称赞的是,在五种不同的检索任务中展示的有效性,每种任务都需要不同的查询格式和奖励结构:
1. Literature Searching (文献检索)
评估指标 :Recall@K(在前K个结果中检索到的目标文档的百分比)例如:"((达姆明) AND (围手术期 OR 血液转输 OR 去氨加压素 OR 抗凝剂)) AND (随机对照试验)" 2. Evidence-Seeking Retrieval (证据寻找检索)
定义 :给定一个问题,检索包含匹配答案候选项的文档。评估指标 :H@N(第一个出现答案的文档排名是否在前N位)query形态 :类似自然语言,如"What is another term for the pivot mounting?"3. Classic Sparse Document Retrieval (经典稀疏文档检索)
定义: 使用关键词匹配和布尔操作进行文档检索(如BM25算法)。 评估指标 :NDCG(归一化折扣累积增益,衡量排序质量)query形态 :关键词和布尔表达式组合- 例如:"(李明 IS-A 人物 AND 李明 IS-A 在职) OR (李明 IS-A 人物 AND 李明 IS-A 失业)" 4. Classic Dense Document Retrieval (经典密集文档检索)
系统会将这类查询转换为向量形式,通过语义相似度进行文章检索 5. SQL Database Search (SQL数据库检索)
定义 :根据自然语言查询生成SQL来检索数据库中的信息。评估指标 :执行准确率(检索结果与目标答案的匹配程度)例如:"SELECT 书名 FROM 图书表 WHERE 类型 != '诗歌'" 论文通过研究五种不同类型的检索任务,展示了强化学习在查询改写领域的通用有效性。这些任务包括专业文献检索、基于BM25的关键词匹配以及SQL生成等多种形式。作者的核心论点是:无论用户的初始query和最终改写的 query的形式如何变化(自然语言到自然语言、专用语法到专用语法、或自然语言到SQL),经过精心设计的强化学习训练都能显著提升查询改写的质量,从而大幅提高最终的检索效果。这一发现证明了强化学习方法在查询优化领域具有跨形式、跨领域的适用性和有效性。
奖励函数设计 既然是强化学习,那肯定是要涉及奖励的,论文针对 5 中不同的检索任务,也涉及了不同的 prompt 和奖励。
其中:捕获任务特定的检索性能,奖励符合所需输出结构的结果,为用户原始的 query,为模型新改写的 query。
这里以Literature Search和 Database Search来举例,
Prompt 如下: Format_reward格式奖励:用户是否遵循 prompt 中要求的格式,如是否出现 "think> 70%召回率得+5.0分,0%召回率得-3.5分 Prompt如下: Format_reward格式奖励:用户是否遵循 prompt 中要求的格式,如是否出现 "think> </think answer /answer等 token,生成的answer 中的 SQL 是否是合乎SQL 语言的 SQL - Retrieval reward: 与标签答案的 SQL 执行的结果是否一致。 以下是所有 5 种检索任务的奖励设置。 论文 3: 《Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning》 结合交错式多轮搜索引擎调用的文本生成 Search-R1通过创新的五阶段交互流程实现知识检索与推理的深度融合:
初始问题解析阶段 当接收到用户问题时,模型首先在<think>思考标签内进行初步推理分析,识别当前知识储备中的信息缺口。动态检索决策阶段 若推理过程中发现知识不足,模型将自主触发检索机制,通过<search>查询内容</search>格式生成精准搜索指令。信息整合阶段 搜索引擎返回的结果会被结构化封装在<information>信息标签内,为后续推理提供可靠的外部知识输入。迭代优化机制 系统支持多轮次检索-推理循环,模型可根据信息完备性动态决定是否发起新一轮检索,直至满足解答需求。最终响应生成阶段 当判定信息充足时,模型直接通过<answer>答案标签输出简洁结论,无需附加解释说明。 以下为 Search-R1的 prompt与 Search-o1不同的是,Search-R1针对任务进行了强化学习的训练,Search-R1没有 Search-o1的 Reason-in-Documents模块,检索到的内容是直接完整放到思维链中的。以下是Search-o1的例子,本质就是生成检索、返回内容、思考,不断循环,直到达到最终答案。
奖励函数设计 Search-R1使用基于规则的奖励系统,只关注最终结果的正确性:
其中,EM是精确匹配函数,是从回答中提取的答案,是标准答案。 这种简单的奖励设计避免了复杂的过程奖励和可能被"黑客攻击"的神经奖励模型。这个模型设计没有包含格式奖励,作者解释因为模型已经表现出良好的结构遵循能力。
论文 4: 《R1-Searcher: Incentivizing the Search Capability in LLMs via Reinforcement Learning》 两阶段的强化学习增强检索能力 R1-Searcher引入了一个两阶段基于结果的强化学习方法,使LLM能够在推理过程中自主调用外部搜索系统:
1.第一阶段(检索学习训练) :通过检索奖励激励模型学习如何正确调用外部搜索,不关注答案准确性。
思考过程必须封装在<think>...</think>标签内 最终答案必须封装在<answer>...</answer>标签内 检索查询必须使用<begin_of_query>...</end_of_query>标签标记 阶段总奖励 :Rretrieval + Rformat (最高1.0分)2. *第二阶段(检索结果集成训练) :在确保格式规范的基础上,提升模型有效利用检索信息解决问题的能力
第二阶段删除了检索奖励,引入了答案奖励,同时保留格式奖励但调整了惩罚力度
(注:相比第一阶段,显著提高了格式错误的惩罚力度) 使用F1分数作为答案奖励:Ranswer = 2 * IN / (PN + RN) 阶段总奖励 :Format Reward + Answer Reward 这种两阶段设计通过分离关注点,先确保模型掌握正确的检索行为规范,再专注于提升答案质量,实现了检索能力与信息整合能力的阶梯式提升。总结 Search-o1、 Search-R1、R1-Searcher 的研究方向基本一致:构建长的搜索推理思维链,在思维链中不断调整搜索策略 。一个重要共识是,强化学习比监督微调(SFT)能带来更好的泛化性。 DeepRetrieval虽然关注查询改写,但范围过窄,难以形成完整思维链。理想的查询改写应是思维链中的自然产物,而非单独训练的任务。 我们距离真正的Deep Research还有十分长的距离。完整的Research涉及更多挑战,如并行搜索、超长下文管理、研究目录编写、结论调整等。但正如开篇所述,先把Search做好,才能做好Research 。