开源模型在 BrowseComp 这类「答案藏在十几个网页之外」的题上普遍不到 10%。论文把差距归因于两件事:没有足够难的题,也没有让模型在多轮搜索里被奖励的训练方法。 DeepDive 的做法是先在图谱上走一条长链、把中间线索模糊化造出难题,再用带冗余查询惩罚的多轮 GRPO 在这些题上训练。
深搜训练卡在数据上:HotpotQA 这类题几个明确实体搜一下就有答案,而 BrowseComp 的题要求你在多个「模糊实体」之间反复推理、搜索、验证。人工造这种题太贵,DeepDive 就用知识图谱自动造。
造题流程是「先定答案,再逆向写题」:按出度范围 4–8 筛节点,走一条长度 5–9 的长链,用 LLM 挑下一个节点保证连贯,再把链上每个节点的属性模糊化(「1948 年」写成「20 世纪 40 年代末」),最后用一个带搜索的前沿模型做难度筛——问 4 次只要答对 1 次就丢弃。
训练端是端到端多轮 GRPO:格式全对 + 答案判对才给 1 分,再减去 λ·S(T) 惩罚同一个轨迹里高度相似的重复查询。这个小惩罚让模型在分数略降的情况下少调约 14% 的工具。
先看清 BrowseComp 这类题的形状:能不能搜到答案,取决于能不能先把模糊的描述还原成具体实体。
论文 Figure 2 用一道 HotpotQA 题和一道 BrowseComp 题做对比。HotpotQA 问「World Fellowship Center 东边的山有多高」,实体是明确的,搜一次就能定位。BrowseComp 的题则给出一串绕圈子的描述——「偶尔打破第四面墙、曾在 1960–80 年代播出不到 50 集电视剧的虚构角色」——每个描述都指向一个模糊实体,必须边搜边推理,一步步把范围收窄。
问题里给出可以直接搜索的实体名,推理链短、可预测。只需要 Browse,不需要长程推理。
问题里是一组特征描述,实体本身要借搜索+推理才能锁定。Browse 与 Reason 必须交替,网页信息往往分散、矛盾、难以定位。
这就带来两个互为因果的缺口。论文在引言里明确指出,开源模型落后的原因是:
所以问题可以拆成两问:怎么批量造出足够难的题?怎么让模型学会在工具环境里长程地搜?后面两节分别对应论文的两大支柱。
数据侧和训练侧各有一路主流做法,DeepDive 是在它们各自的短板处补位。
HotpotQA、2WikiMultiHopQA、Bamboogle、Musique 等数据集让 agent 有题可训,但题目结构可预测,搜几次明确实体就能作答。
卡点:难度不够,学不会「在模糊线索间迭代」「在矛盾信息里筛证据」。人工造 BrowseComp 级题目则成本高、难扩展。
R1-Searcher、ReSearch、Search-R1、DeepResearcher 等用 RL 优化「推理 + 检索」的组合,但训练和评测主要停留在多跳 QA 场景。
卡点:训练目标只追求「找到答案」,对「探索是否充分、查询是否重复」没有约束;模型容易收敛到浅层查询模式。
数据侧从 KG 自动合成:图谱天然支持多跳、每个节点都带属性,属性能被选择性遮盖——难度是「旋钮」而不是「祈祷」。训练侧沿用 GRPO,但在奖励里加入 r(T) − λ·S(T),把「问得重复」直接扣分。
数据合成的全部巧思,就是让图上的路径决定答案在哪、让模糊化决定题目有多难。
知识图谱记作 G = (V, E),每个实体 vi 带着一组属性 A(v)。论文先挑一条路径:
然后,把路径上每个节点和它的属性拼成「属性富集路径」 PA,从终点 vk 的属性里选一个 aik 作为标准答案,并由 LLM 对整条路径做模糊化:
论文写明的合成超参是:路径长度 k ∈ [5, 9],出度 d = 3,dmin = 4,dmax = 8;模糊化用 Gemini-2.5-Pro;图谱数据来自 KILT 与 AMiner 两个公开图谱。最终产出 3,250 条,随机拆成 1,016 条 SFT、2,234 条 RL。
出度太高的节点是「过度热门」的实体,模型很容易猜到;出度太低则无法扩展路径。上界 dmax = 8 砍掉热门枢纽,下界 dmin = 4 保证每一步都有足够分支让 LLM 挑选。这与直接把出度固定在 d = 3 形成对照:固定的路径完全由度数决定,而 DeepDive 还多一层 LLM-select 的语义把关。
题目造出来还不算完,论文再用一个带基础搜索能力的前沿模型(如 GPT-4o)做难度筛:每道题测 4 次,只要任何一次答对就丢弃,只有 4 次全失败的题才保留。这一步直接把「模型查表就能答」的题筛出数据集。
下面把 10 个候选节点按实际出度排开。拖动出度区间,看哪些节点能进入下一步的候选集、有多少条路径可以延伸;点「让 LLM 挑选」看与路径语义不相关的节点被剔除后还剩多少。
论文并没有公布具体的度分布和 LLM-select 的命中率;这里的 10 个节点与「剔除 2 个」都是为了让你手算而设定的最小示例,反映的是 Eq. 4–5 的逻辑,不是论文数据。
真实实现中,N(vi) 是对当前节点所有邻居按出度区间筛出的候选集,LLM 每次只选 1 个下一个节点;这里把候选数直接理解为「可延伸路径条数」,是为了让「广度」和「零候选」两种失败模式可见。
训练端的全部创新集中在一个减号上:对错之外,再惩罚「在同一个轨迹里反复问几乎相同的问题」。
轨迹沿用 ReAct 式循环:思考 ct → 动作 at(search / click / open)→ 观测 ot,直到模型用终止动作 aeos 给出答案。一条轨迹是
严格二元奖励要求每一步格式都对,且终止答案经 LLM-as-Judge 判定与标准一致:
冗余惩罚用轨迹内所有查询两两之间的 Jaccard 相似度平均值来度量,再以系数 λ 从奖励里扣除:
GRPO 部分沿用标准形式:每个问题采样 G 条轨迹,组内标准化得到优势 Ai,再用裁剪的目标函数(Eq. 6)更新策略。一个关键的工程选择是 KL 系数 β = 0——论文引用已有工作(Vassoyan et al., 2025)说明去掉 KL 惩罚、放开探索,对这类任务更有利。
论文 Figure 4 的例子:query 1 =「deep neural network」(3 个词),query 2 =「neural network eval」(3 个词),交集 2、并集 4,相似度 2/4 = 0.5。勾选要放进轨迹的查询,看 S(T) 怎么变——注意:它算的是两两平均,不是「相邻平均」,查询越多,分母 T(T−1) 涨得越快。
有两种边界值得记住:一是 λ 与准确率存在权衡——Figure 7b/7c 报告加入冗余惩罚后,后期准确率约高 20%,工具调用约少 14%。二是 惩罚是「平均」而非「最大」,所以一条轨迹只要保持整体多样,偶尔的重复查询不会把奖励一棍子打没;但如果模型收敛到「换个说法再搜一次」,S(T) 会快速逼近 1,扣满 0.1。
训练配置:SFT 用 Claude-4-Sonnet-Thinking 拒绝采样生成 858 条冷启动轨迹,backbone 为 GLM-Z1-9B-0414 与 QwQ-32B,各训 3 epoch、全局 batch 32、学习率 1×10−5、最大上下文 104,800;RL 用 Slime 框架,rollout 8、每 prompt 16 样本、全局 batch 128、temperature 1.0、最大上下文 51,200 tokens、学习率 1×10−6。
论文 Figure 3(造题)与 Figure 4(训练)拼起来,就是下面这张端到端流程。
有两个容易忽略的细节:一是训练时的环境是真实 API(Serper 检索返回前 10 条、Jina 负责 click/open),不是离线快照,所以模型学到的是真实网页的噪声分布;二是训练期的评测只在 BrowseComp-266 子集上做(最多 75 轮),训练饱和后才换到完整 1,266 题、上限提到 128 轮——这解释了为什么 Figure 5 的曲线比最终表 1 的数字更低。
看三个层面:和谁比、RL 带来了什么、推理时加计算能加到多高。
| 模型 | BrowseComp | BrowseComp-ZH | Xbench-DS | SEAL-0 |
|---|---|---|---|---|
| OpenAI DeepResearch | 51.5* | 42.9* | — | — |
| Claude-4-Sonnet-Thinking† | 14.7 | 30.8 | 53.0 | 37.8 |
| GPT-4o† | 1.9* | 12.8 | 30.0 | 9.1 |
| Claude-3.7-Sonnet† | 4.5 | 14.2 | 29.0 | 14.4 |
| WebSailor-32B | 10.5* | 25.5* | 53.3* | — |
| DeepSeek-R1-0528 | 3.2 | 28.7 | 37.0 | 5.4 |
| QwQ-32B† | 1.3 | 14.5 | 27.0 | 4.5 |
| DeepDive-32B (SFT only) | 9.5 | 23.0 | 48.5 | 23.9 |
| DeepDive-32B | 15.3 | 29.7 | 51.8 | 25.5 |
† 表示论文为这些非浏览模型接上了浏览工具;* 表示直接沿用原论文报告的数字。Table 1 中 Xbench-DeepSearch 的 DeepDive-32B 为 51.8,Table 3 同行为 50.0,以 Table 1 为准。
Figure 6c 的两个对照:多数投票把 BrowseComp-266 从 12.0 提到 18.8,而「选工具调用最少的那个答案」提到 24.8,逼近 pass@8 的理论上限 37.6。论文给出的解释是——模型对好答案有信心时会早早停手,额外调用往往反映的是不确定。工具调用扩展上(Figure 6a),最大工具调用达到 16 以上后,RL 版明显拉开与 SFT 版的差距。
Figure 7a:去掉格式奖励后曲线基本停在 8.0 附近不动,加上格式奖励后整段训练期高出约 2 个绝对点。Figure 7b:加入冗余惩罚后后期准确率约高 20%,同时工具调用约少 14%。严格的格式约束没有「饿死」稀疏奖励,反而让优化更稳定。
论文自己承认的边界,配上实验里能读出来的边界。
合成数据难度上限「显著低于 BrowseComp」,这是 15.3% 与 DeepResearch 51.5% 差距的直接原因。题目再难,也逃不出图谱结构 + LLM 模糊化这两道加工。
主要用难题训练,导致 DeepDive-32B 出现 over-search:即使已有答案,也倾向继续调用工具。论文把「最优训练步数 / 更合适的奖励设计」列为未来工作。
9B 模型 RL 后 BrowseComp 从 5.6 到 6.3、SEAL-0 反而从 15.2 到 12.2。论文对此的解释是小模型推理能力有限、易对合成数据过拟合——所以不要把 32B 的结论直接外推到更小的模型。
一句话:DeepDive 解决的是「用可控成本把题变难、把搜索过程奖励对」,而不是「把难度上限推到 BrowseComp」。论文给出的下一步是补一份半自动 i.i.d. 数据——用带搜索的 o3 辅助人工造 2,997 英文 + 275 中文题,论文报告单靠它做 RL 后 32B 模型 BrowseComp 到 22.2%(§4)。这也印证了:数据难度依旧是这条路线的主变量。