开源搜索智能体差在搜索智能:能不能拆开模糊问题、给出精确查询、从嘈杂网页里抠出关键信息、并回头验证结论。已有的在线 RL 通常只给 10 轮以内的工具调用,因为批同步训练里一条超长轨迹会让整批 GPU 空转。 ASearcher 把轨迹执行和模型更新彻底解耦,换来 128 轮的上限——训练中出现了超过 100 次工具调用、超过 400k 输出 token的轨迹;代价是训练会吃掉上千 GPU 小时。
长时程搜索卡在两件事上:轨迹走不长,以及能当训练题的难题太少。前者是系统工程问题,后者是数据问题;ASearcher 把两个都当作瓶颈,而不是只调算法。
核心机制是全异步 Agentic RL:轨迹各自并行、互不等待;一旦收集到足够轨迹就立即启动训练步,不等那条最长的轨迹。于是轮次上限可以从 ≤10 抬到 128,而 GPU 在生成阶段几乎不空转。
数据端是合成智能体:从种子问题出发反复 Injection(注入外部事实)和 Fuzzing(模糊关键信息),再用三步验证筛掉太简单、无答案、或不需要搜索就能答对的题。14,107 个种子最终留下 25,624 条。
结果是 ASearcher-Web-QwQ-v2 在 GAIA 上 Avg@4 58.7、xBench-DeepSearch 51.1,超过同尺寸开源智能体;但这个数字背后是约 16k H800 GPU 小时和端到端评测时实测的长时间空等——它换来的是能力上限,不是便宜。
先看清为什么「多给几轮」不是改个参数就能做到:轮数一放长,批同步训练的等待时间会指数式地失控。
论文用一枚金牌数的问题开场:中国在 2012 伦敦奥运会拿了多少金、银、铜牌?网上两套说法互相打架(38 / 27 / 22 对 39 / 31 / 22),真正的答案要先找到官方报告里「因兴奋剂检测被取消」的记录,才能定下来。这类任务要求智能体处理输入的高不确定性、生成精确查询、从海量信息中抽取要点、消解冲突,最后回头验证——论文把这一整套能力叫 Search Intelligence。
这些事情一步做不完。论文在 GAIA、xBench-DeepSearch、Frames 上强制智能体至少使用不同的轮数,同一个模型轮数越多,准确率越高(Fig. 6 Left)——也就是说,「能走多远」本身就是能力的一部分。
一条轨迹由多轮「LLM 生成 → 调工具 → 再生成」串联而成,单条就要串行地跑很久;而同一批里不同轨迹的长度差极大——论文观察到最长的轨迹所用的 token 能比短的差两个数量级。在批同步(batch generation)训练里,一个训练步必须等整批采完,于是批里回响的一直是那条最慢的轨迹的空转。
两个问题叠在一起就成死结:想涨能力要多给轮数,但轮数一多,空转占比急剧上升,训练变得不可负担。
另一个瓶颈不在训练循环里,而在训练题本身:在线 RL 需要大量有唯一答案、足够难、又必须用工具的问题。现有开源搜索智能体的训练数据(如 HotpotQA)要么过时、要么过于简单、要么规模太小,RL 在它们身上学不出复杂的搜索策略。所以这篇论文要同时回答:训练系统怎么撑住长轨迹,训练题从哪来。
论文的第二节是一个 GAIA 案例的对照——同一道题,三条轨迹暴露出两种开箱方案的两种失败方式。
用多跳 QA 加 RL 训练工具调用(Search-R1、R1-Searcher、DeepResearcher 等),确实能让工具调用次数上升,但它们人为限制轮数——论文举例 Search-R1 每轨迹 ≤10 轮,案例里训练时只设 4 轮。
盲区:轮数不够,只能学到拆一句查询、搜一次这类初级策略。案例中的 Search-R1-32B 拆不开多变量问题、只发模糊查询,还有明显幻觉,最后没能解决任何一个未知量。
用强 LRM(如 QwQ)+ 提示驱动,不做在线 RL 也能发出大量工具调用;近期还有工作在其上做离线 RL。
盲区:没经 RL 的模型能在海量调用中找到物种、文章、论文,却在抽关键信息和验证错误结论上掉链子——案例里即使已经碰到直接指向答案的信息,仍被前面的错误结论带偏。论文还指出离线 RL 在更广的领域里表现不如在线 RL。
| 路线 | 长轨迹 | 学到深层策略 | 数据需求 | 代表 |
|---|---|---|---|---|
| 在线 RL(批同步) | 被轮数上限压住 | 只到初级搜索 | 多跳 QA | Search-R1 · R1-Searcher |
| 提示工程 / 离线 RL | 能跑很多轮 | 会搜不会验证 | 无(提示)或 SFT 轨迹 | Search-o1 (QwQ) |
| ASearcher | 128 轮上限 | 端到端 RL,含验证 | 合成 + 筛选难题 | ASearcher-Web-QwQ |
ASearcher 的选择是:两条都要。在线 RL 负责让模型学会深层策略,但先把在线 RL 的系统约束拆掉;同时用合成智能体补足「足够难的题」。案例里 ASearcher-Web-QwQ 一次只认真看一个网站、列出所有候选答案逐一核对,找到答案后还会再花几轮验证——这正是上面两类方案各自缺失的那一半。
ASearcher 的「方法」不是新损失函数,而是对训练时序的重新安排;配上一套把普通问题「变难」的数据合成流程。
每条轨迹独立地向工具服务器发调用请求、向推理引擎发生成请求,并发请求由服务器统一调度。轨迹 A 在等网页返回时,轨迹 B 的 LLM 生成照常进行。这一层几乎所有高吞吐系统都会做,问题不大。
关键在于第二层。批同步系统里,即便 rollout 本身是并发的,一个训练步仍要等整批采完。One-Step-Off RL 把第 N 步训练和第 N+1 步生成重叠起来,但批仍然被最慢的那条轨迹卡住。
代价是长轨迹可能跨过多个模型版本:它的后半段是旧策略生成的,策略一变,GRPO 的比例就有偏。论文只用稀疏的终局奖励、并在组内做相对比较(见下一节),这让样本陈旧化的伤害可控;但它是这套系统相对同步训练最实质的近似,论文没有给出它的量化分析。
数据合成智能体从种子问题出发,每一步二选一:
每个版本都要过三步验证:基础质量(清晰、答案有事实支撑)、难度测量(让不带工具的 QwQ-32B 直接答)、答案唯一性(检查「答错」的那些是否其实也成立)。题目合成完毕后,再剔掉不用搜索就能答对的题——它们对训练搜索能力没有贡献。
数字取自 §3.2.2 与 §4.1:每个种子最多选 3 个高质量变体;保留样本平均 4.27 次注入、2.10 次模糊。7B/14B 与 QwQ 各有一套 35k 训练数据(含开源数据筛选后的 16k,见 04 节),均已开源。
这一节把训练循环拆开,看异步换来了什么、又引入了哪些新的不稳定来源。
对每个问题 x 采样 G 条轨迹,每条是一串状态-动作,动作里可以夹带 <search>…</search> 这类工具调用。损失就是标准的 GRPO 裁剪目标,优势 Âi 由组内相对奖励算出:
真正决定能否训出长轨迹的,是下面四个训练细节:
轮次上限比同尺寸基线高一个量级,前提是异步让长轨迹不拖垮吞吐。batch 分别为 128 与 64;Web-QwQ 训练约 16k H800 GPU 小时。
Agent 本身很简单:只有搜索与网页浏览两个工具;网页摘要也由智能体自己做,并且和思考、工具调用一起在端到端 RL 里优化——不依赖外部 LLM。
第一阶段数据覆盖各难度;第二阶段只保留「至少需要 5 次工具调用」的题,逼模型把长程能力激活出来。两个阶段的产物即 -v1 与 -v2。
如果一组轨迹奖励完全一样(优势为 0),或许是题太容易,或许是标注本身就是错的——两者都提供不了梯度。这类题被剔除,长轨迹尾部的无效样本也被一并压掉。
奖励只在轨迹结束时计算:从基座模型训练时用 格式奖励 × F1;微调 QwQ 时用 LLM-as-Judge 打分、不再要格式奖励。全程没有过程奖励,长轨迹的信用分配只依赖终点。
第一处是开源数据筛选:先在全部开源数据上 RL 训一个模型,每题采 16 个回答,剔掉三种题——16 个回答里一题都没对(不可解)、准确率已经 ≥50%(不够难)、或 ≤1 轮就能搜到(不需要搜索)。从 304k 条里只留下 16k 条。这个「用一个弱模型能答对的题对强模型也没用」的判据,也解释了后面为什么合成题还要再过滤一轮。
第二处就是 03 节的合成数据。两套 35k 训练集(7B/14B 一套、QwQ 一套)都由这两路拼成,公开在同一仓库。
16k H800 小时是 Web-QwQ 两个阶段合计的预算,它并不因为异步而消失。异步降低的是「GPU 在等最长轨迹时的空闲占比」,让你可以在同样的机器上更早把长轨迹变有用;但轨迹本身更长,token 总量反而更大。这一点在 05 节的模拟器里能直接看到。
论文 Fig. 7 把 One-Step-Off 与全异步并排画出来;切换下面的模式,观察同一批轨迹上训练步从哪开始。
一条轨迹的每一步都是「LLM 生成 → 工具返回」的串行循环,时间轴上的长度就是这条链的长度。下面的模拟用论文 Fig. 7 的 12 条轨迹,把两种调度画在同一时间轴上,好让「空转」可见。
时间单位取 Fig. 7 中最短轨迹(Traj 1)的长度为 1。批同步:训练步 N 需要 1,2,3,4,5,6,8 全部完成(t=7),最长的 Traj 7 在 t=10 结束;全异步:训练步 N 在 t=3 已可启动,收集到 1,2,3,4,6,8,9 共 7 条,Traj 7 跨版本继续。
这个模拟把问题量化了:同一批轨迹,训练步的启动时间从 t=7 提前到 t=3——少等的 4 个时间单位几乎正好等于 Traj 7 超出其他轨迹的那一截。这正是论文声称「近满利用率」的来源:不是让轨迹变短,而是让等待不再由最长者决定。注意 t=3 时只有 7 条轨迹到齐,缓冲区门槛比同步的小,这也是全异步的收益所在。
重点看两处对照:v1 对同尺寸开源智能体,v1 → v2 对同一系统只换训练题目难度。
| 挑战基准(LLM-as-Judge) | QwQ-32B 直答 | Search-o1 (QwQ) | v1 | v2 | v2 Pass@4 |
|---|---|---|---|---|---|
| GAIA Avg@4 ↑ | 23.1 | 48.1 | 52.8 | 58.7 | 74.7 |
| xBench-DeepSearch Avg@4 ↑ | 11.8 | 40.3 | 42.1 | 51.1 | 75.0 |
| Frames Avg@4 ↑ | 29.9 | 63.6 | 70.9 | 74.5 | 85.5 |
| HLE-500 Pass@1 ↑ | — | — | — | 21.5 | — |
数字取自 Table 4 与 Table 5(Table 5 只列 v2 的 Pass@1)。表 4 中还有 Search-R1-32B(GAIA 28.6、xBench 19.5、Frames 44.1)等基线,均低于 v1。
v1 → v2 是数据分布带来的纯收益:两阶段的第二阶段只保留需要 ≥5 次工具调用的题,模型在三个基准上又各涨了一截(GAIA +5.9、xBench +9.0、Frames +3.6)。这比换更强的系统更说明问题:难度的分布本身就能把长程能力推上去。
ASearcher 训练时只用一个模型,但网页摘要环节可以换成外部模型:用 DeepSeek-V3 做时摘要,v2 在 GAIA / xBench / Frames / HLE-500 上分别升到 60.3 / 56.4 / 76.6 / 23.4。
测试时每道题独立跑 K=16 次、用 DeepSeek-V3 聚合结论,四项分别达到 71.8 / 75.0 / 83.4 / 24.6。作为参照,官方报告里的 Kimi-Researcher 是 xBench 69.0、Frames 78.8;Claude-4-Sonnet 是 GAIA 68.3、xBench 64.6。
这是「能力可达」而非「训练即超出商用」:GAIA 71.8 靠的是 16 倍推理次数,不是单个 rollout 的 58.7。
Fig. 6 显示 Web-QwQ 的工具调用随训练上升,到第 200 步附近平均最多约 40 次,个别轨迹峰值约 70 次,单条轨迹输出 token 最多超过 150k。论文摘要里写的「超过 100 次、超过 400k」出现在 Fig. 1 的训练统计中,观测尺度与主文不同;本页数字以主文 §4.3 为准。
基座模型这一侧有两个更值得注意的对比:7B 学不会网页浏览,14B 能在训练后段学会打开网页答难题——作者推测是 7B 容量不足以稳定地压缩长网页;另外高质筛选后的训练集让 7B 的搜索查询数上到 6(高于 Search-R1、R1-Searcher 报告的数字)。
Fig. 11 跟踪「alternatively / however / wait」这类反思词,和「doc / mention」这类指向外部资料的词。前者在训练全程稳步上升;后者在第 200 步之后才明显上升——正好是第二阶段、只保留 ≥5 轮难题的时候。换句话说,光是给更多轮数并不会自动学出「回头验证」;把训练题换成必须验证才能做对的题,它才出现。
训练轮数只有 4,只能把「多变量」当成一句话搜;对搜索结果过度自信,出现幻觉,未知量一个也没解决。
能靠大量调用找到四个相关实体,但容易漏掉关键句;一旦得出错误结论,即使后面碰到证据也不回头。没有验证步骤。
拆分精确查询、一次只读一个网站、列出所有候选答案逐一分析;搜不到直接证据时会跨文档推理;在报出「Mice」之后还会多花几轮确认。
按论文自己的数据和设计反推,至少有四处地方,它的收益不等于它声称的所有原因。
论文没有把异步系统、128 轮上限、两阶段课程、合成数据分别做消融。v1 → v2 的增益来自难度筛选(数据),而 v1 相对基线既换了训练系统,也换了数据来源。v4 的案例里,故事读起来像一个因果链,但其中每一环的贡献都没有单独测量。
全异步允许长轨迹跨越多个模型版本(≥128 轮的轨迹几乎必然如此),GRPO 的组内比较里可能混着不同策略的样本。这在短轨迹的推理任务里是常见近似,但这里是这篇论文的「长程」本身,偏差恰恰在最关键的那部分。论文只在理念上依赖稀疏终局奖励来缓解,没给超参之外的稳定性数据。
7B 学不会网页浏览,14B 才行;7B/14B 的上限只有 32 轮,Web-QwQ 才有 128 轮。方法能在小模型上复现,但长程能力的涌现依赖于 base 模型的容量。论文自己的假设也是「容量不足、无法稳定压缩长网页」。
16k H800 小时的两个阶段预算,是全部开源项目级别而不是可随手复现的开销。GAIA 用文本专用子集的 103 题、其余用官方测试集全量,这种「GAIA 103 题」的口径比排行榜常见的 GAIA 500 题口径窄,数字不宜跨基准直接比较。另外,Avg@4 / Pass@4 来自 4 个随机种子,论文未报告方差。
一句话总结:ASearcher 没有发明新的 RL 算法,它做的事情是把「训得动」和「有题训」这两个前置条件先补齐,然后再用长轮数去解锁能力。「训得动」来自把批同步的时钟换成完成数,「有题训」来自把种子题变得不得不一直搜。这两件事的贡献和代价都还没有拆开,但对想要训练长程搜索智能体的人来说,它们是两个绕不开的工程前提。