【阿里DeepResearch】SailorFog-通过高质量SFT训练具备推理能力的Web Agent
通过高质量sft与rl,提升模型推理能力
一、数据构造
1. 知识图谱构建(Graph Construction)
- 起点:从一个“种子实体”(如公司名、人名)出发,调用真实 Web 工具(如 Google Search、Jina 网页解析器)自动爬取相关信息,逐步扩展出一个密集互联的知识图谱。
- 关键改进(vs. V1):
- 主动引入环状结构(cyclic connections):不同于传统“easy-to-hard”方法(从简单问题逐步扩展,天然生成树状/无环结构),V2 在扩展过程中刻意寻找并建立节点间的回环连接(例如 A→B→C→A),使图谱更贴近真实知识网络(如维基百科中的交叉引用)。
- 保留过程元数据:记录每次扩展所用的搜索 query、返回的 URL、实体出现频次、上下文多样性等统计特征。这些元数据在后续 QA 生成中用于控制难度和多样性。
- 输出:一个带属性的异构图,节点为实体(如公司、人、事件),边为关系(如“任职于”“起诉”“客户”),节点/边上附带原始文本片段和来源信息。
2. 子图采样(Subgraph Extraction)
- 挑战:V2 图谱密度高,若沿用 V1 的“枚举固定边数子图”策略,会因组合爆炸而不可扩展。
- 解决方案:采用 随机游走(Random Walk)。
- 从图中随机选择起始节点,进行长度可控的游走,收集连通子图。
- 使用 Weisfeiler-Leman (WL) 算法对采样子图进行同构检测,剔除结构重复的子图,确保多样性。
- 优势:可在大规模稠密图上高效采样大量非同构、连通、结构丰富的子图,覆盖树状、环状、星型等多种拓扑。
3. QA 生成(QA Generation)
- 核心原则:结构感知 + 多维不确定性。
- 步骤:
- 轨道节点识别(Orbit Node Identification):
- 对每个采样子图,利用图同构理论识别“轨道”(orbit)——即在图自同构下不可区分的节点集合。
- 每个轨道代表一种结构角色(如“中心节点”“叶子节点”“环上节点”)。
- 生成 QA 时,均匀覆盖所有轨道,避免只聚焦于某类结构(如仅问中心实体)。
- 多维不确定性注入(Beyond Obfuscation):
- 传统方法(如 V1):仅使用“模糊化”(obfuscation),例如将“Apple Inc.” 替换为 “一家总部在库比蒂诺的科技公司”。
- V2 新增不确定性类型:
- 数值/时间范围模糊:如“2004–2006 年间某一年”“收入占比 27%–74%”。
- 多条件交叉约束:需同时满足多个独立线索(如财务数据 + 诉讼记录 + 高管变动)。
- 隐式逻辑依赖:如“某事件发生后,某人担任新职”,需模型推断时间先后与因果关系。
- 反事实干扰:引入看似相关但实际无关的实体或事件,测试模型抗干扰能力。
- 生成方式:
- 不直接将子图喂给 LLM 端到端生成 QA。
- 而是基于子图结构与元数据,程序化构造问题模板,再由 LLM 填充自然语言表述,确保逻辑严谨、难度可控。
- 轨道节点识别(Orbit Node Identification):
示例(来自附录 C):
问题要求找出一家公司,需同时满足:
- 2004–2006 年间,某年 3 家客户贡献 27%–74% 收入,另一年 4 家客户贡献 55%–89%;
- 2011–2019 年间有 前员工提起集体诉讼,和解金额 120–190 万美元;
- 创始人于 2008 年公告,将在 2007–2008 财年第三季度初 转任董事长,同时任命新 CEO;
- 公司 在特拉华州注册,1988–1995 年间成立。
→ 此类问题需模型分解线索、构造精准 query、交叉验证多个独立来源。
总结:SailorFog-QA-V2 的三大创新
- 图谱结构更真实:通过主动构建环状连接,突破树状结构限制。
- 采样可扩展:随机游走 + WL 去重,高效覆盖复杂拓扑。
- 不确定性更丰富:超越 obfuscation,引入多维模糊与逻辑约束,逼迫模型进行深度推理。
二、训练方法:SFT + 双环境 RL
本节基于论文第4节“Agentic Post-training”内容,提炼 WebSailor-V2 的完整训练流程,包括 SFT 冷启动、双环境 RL 架构与 RL 算法细节,并附原文关键示例。
1. SFT 冷启动(SFT Cold Start)
- 目的:为 RL 提供强初始策略,解决 reward 稀疏问题。
- 数据来源:全部使用 SailorFog-QA-V2 生成的合成轨迹。
- 轨迹生成方式:由开源模型通过 rejection sampling 求解 QA 任务生成。
- 基座模型:Qwen3-30B-A3B-Thinking-2507,上下文长度扩展至 128k。
- 原文依据:
“Our SFT dataset is composed entirely of synthetic data generated from SailorFog-QA-V2. The trajectories for SFT are constructed by open-source models to solve the generated QA tasks with rejection sampling.”(Section 4.1)
2. 双环境强化学习(Dual-Environment RL)
(1) 模拟环境(Simulated Environment)
- 构建方式:基于离线维基百科知识库(offline Wikipedia knowledge base)构建高保真模拟器。
- 工具模拟:search、visit、Google Scholar、Python interpreter 均被仿真实现。
- 优势:
- 高并发、零成本、完全可控;
- 状态转移与 reward 机制高度逼近真实环境;
- 用于算法快速迭代与训练数据筛选。
- 原文依据:
“We build a simulated environment using an offline Wikipedia database and a corresponding suite of web tools… enabling us to conduct high-frequency algorithmic experiments on a highly cost-efficient, fast, and fully controllable platform.”(Section 4.2)
(2) 真实环境(Real Environment)
- 工具栈:
- search:调用 Google 搜索,返回 top-10 结果(标题、摘要、URL);
- visit:通过 Jina 获取网页全文,再由 Qwen3-30B-A3B 作为摘要模型按目标提取信息;
- Google Scholar:专用于学术文献检索;
- Python interpreter:沙箱中执行代码。
- 稳定性保障(关键工程实践):
- 统一工具调度层;
- QPS 限制、结果缓存、超时重试、服务降级、备用数据源切换。
- 目标:对外提供确定性接口,屏蔽真实 API 的波动性。
- 原文依据:
“We architect a unified tool execution interface… engineered robust concurrency handling and fault-tolerance strategies, such as QPS constraints, result caching, automated timeout-and-retry protocols, service degradation… This multi-layered design ensures that from the agent’s perspective, the tool invocation process is abstracted into a deterministic and stable interface.”(Section 4.2)
3. RL 算法与训练细节
- 算法:基于 GRPO(Generalized Reinforcement Learning with Policy Optimization)的定制版本。
- 损失函数:token-level policy gradient loss(参考 DeepSwe、DAPO)。
- 优势估计:采用 leave-one-out 策略(Chen et al., 2025)降低方差。
- 负样本处理:过滤低质量负样本,如因长度超限未输出答案的轨迹,防止“格式崩溃”(format collapse)。
- 训练策略:严格 on-policy,始终用最新策略采样轨迹。
- 超参:batch=128, lr=1e-6, temperature=1.0, top-p=1.0。
- 原文依据:
“We employ a strictly on-policy training regimen… token-level policy gradient loss… adopt a leave-one-out strategy… selectively exclude certain negative samples… those that do not yield a final answer because they exceed a length limit.”(Section 4.2)
4. 数据-策略闭环(Data-Policy Feedback Loop)
- 核心机制:根据训练动态(如 reward、entropy)动态合成与过滤训练数据。
- 关键洞见:
“Data is the core driver of model capability enhancement; its importance even surpasses that of the algorithm… synthetic data offers a more consistent distribution… human-annotated data is inherently noisier.”(Section 4.2)
- 实践结论:在 BrowseComp 测试集上直接训练效果远差于合成数据,因后者分布更一致、规模更大、噪声更少。
三、训练过程数据分析
一、SFT 的输入输出格式
SFT 训练数据由 完整轨迹(trajectory)构成,每条轨迹是以下格式的 token 序列(无特殊分隔符,自然拼接):
Question: <用户问题>
Thought 1: <模型推理>
Action 1: {"name": "<tool_name>", "arguments": {...}}
Observation 1: <工具返回结果>
Thought 2: <基于观察的新推理>
Action 2: {"name": "<tool_name>", "arguments": {...}}
Observation 2: <工具返回结果>
...
Thought T: <最终推理>
Action T: {"name": "final answer", "arguments": {"answer": "<最终答案>"}}
- 输入:从
Question:
开始,到当前Thought t
为止的所有历史(即H_{t-1}
)。 - 输出(监督目标):当前步的
Action t
(含工具调用或 final answer)。 - 关键点:
- 所有轨迹来自 SailorFog-QA-V2 的合成数据;
- 工具调用使用 结构化 JSON(如
search
,visit
); - 最终答案必须通过
final answer
工具输出,不能直接在 Thought 中回答。
示例(来自附录 C Step 1):
Question: A publicly traded company reported that, in a single fiscal year between January 1, 2004, and December 31, 2006, three customers contributed between 27% and 74% of its revenue... Thought 1: We need to find the name of a publicly traded company that matches these clues... Action 1: {"name": "search", "arguments": {"query": ["former employee class action settlement $1.5 million 2015", "founder stepped down as CEO effective Q3 2007 new CEO 2008 Delaware corporation"]}}
二、RL 的输入输出格式
RL 阶段 沿用完全相同的格式,但训练方式不同:
- 输入:同 SFT,即历史轨迹
H_{t-1}
; - 输出:模型 采样生成 的
Action t
(包括 Thought 和 Action); - 训练目标:最大化 token-level policy gradient,奖励基于 最终是否正确回答(pass@1 判定);
- 轨迹终止条件:
- 成功:输出
final answer
且答案正确(由 LLM-as-a-judge 或规则判别); - 失败:超步数(100步)、超上下文(128k)、或输出
final answer
但错误。
- 成功:输出
关键区别:
- SFT 是 监督学习,目标是模仿高质量轨迹;
- RL 是 on-policy 强化学习,目标是优化最终任务成功率;
- 两者共享 完全一致的序列格式与工具接口,确保 SFT 冷启动策略可直接用于 RL 初始化。
三、工具调用格式(Action 的 JSON Schema)
所有 Action(除 final answer)均为以下结构:
{
"name": "search" | "visit" | "google scholar" | "python interpreter",
"arguments": {
// 各工具参数不同
}
}
- search:
{"name": "search", "arguments": {"query": ["query1", "query2"]}}
- visit:
{"name": "visit", "arguments": {"url": ["url1", "url2"], "goal": "extract info about X"}}
- final answer:
{"name": "final answer", "arguments": {"answer": "FormFactor, Inc."}}
总结
阶段 | 输入 | 输出 | 格式特点 |
---|---|---|---|
SFT | Question + (Thought + Action + Observation)* |
下一个 Action (含 Thought) |
监督模仿,轨迹来自合成数据 |
RL | 同上 | 同上(但由策略采样) | on-policy,token-level reward,最终答案决定 reward |
四、记忆压缩
在 SFT(Supervised Fine-Tuning)过程中,WebSailor-V2 通过 ReAct 框架下的显式轨迹序列建模,将上一次的检索结果(Observation)自然语言化并拼接进上下文,从而实现“记忆”与后续规划。具体机制如下:
1. 记忆机制:Observation 直接拼接进上下文
- 每一步的完整轨迹格式为:
Thought t: ... Action t: {"name": "search", "arguments": {...}} Observation t: <工具返回的自然语言摘要>
- Observation t 是由工具(如
visit
)返回的结构化信息经 摘要模型(Qwen3-30B-A3B)压缩后的自然语言文本(见 Appendix B)。 - 该 Observation 会原样拼接到后续步骤的输入上下文中,作为模型生成
Thought t+1
的依据。 - 由于上下文长度扩展至 128k tokens(Section 4.1),模型可完整保留所有历史 Thought–Action–Observation 序列,实现无损记忆。
原文依据(Section 2, Eq.1):
“A complete trajectory with T iterations can be defined as:
( H_T = (\tau_0, a_0, o_0, …, \tau_T, a_T) )
where ( \tau_i, a_i, o_i ) represent thought, action, and observation in the i-th round.”
“At step t, the thought ( \tau_t ) and ( a_t ) are sampled from a policy based on all previous context, i.e., ( \pi(a_t, \tau_t | H_{t-1}) ).”
2. 规划机制:Thought 显式推理 + 工具调用决策
- 在每一步,模型首先生成 Thought t,其内容必须:
- 总结当前已知信息(包括之前所有 Observation);
- 评估当前状态与目标的差距;
- 规划下一步行动(如“需要验证客户收入占比,应访问 2005 年 10-K”)。
- 然后生成 Action t,调用工具执行具体操作。
- SFT 数据中的 Thought 是人工构造或高质量模型生成的,包含明确的推理链(见 Appendix C Step 1, 6, 10 等)。
示例(Appendix C, Step 10):
<think> Great! This matches the clue: founder changed roles, effective at beginning of fiscal third quarter 2008. Founder becomes executive chairman; new CEO appointed. Now we need to verify other clues for FormFactor. FormFactor is a publicly traded company on NASDAQ: ticker FORM. It was incorporated in Delaware? Let’s check. </think> {"name":"search","arguments":{"query":["FormFactor incorporated in Delaware"]}}
→ 此处 Thought 明确引用了上一步 Observation(创始人变更),并规划下一步验证“Delaware 注册”。
3. 关键工程设计:Observation 的摘要化
-
原始网页内容不直接输入模型(太长且噪声大)。
-
而是通过
visit
工具内部的摘要模型(Qwen3-30B-A3B)按 goal 提取相关信息,生成简洁 Observation。Appendix B:
“Visit […] returns a summary tailored to the agent’s immediate goal. In this work, we use Qwen3-30B-A3B as the summary model.”
-
这确保了 Observation 信息密度高、长度可控、与当前目标相关,极大提升记忆效率与规划准确性。
总结:SFT 中的记忆与规划流程
步骤 | 操作 | 作用 |
---|---|---|
t | 执行 Action t(如 search) | 获取外部信息 |
t | 工具返回原始结果 → 摘要模型生成 Observation t | 压缩信息,聚焦目标 |
t+1 | 将 Observation t 拼接进上下文 |
记忆历史结果 |
t+1 | 模型生成 Thought t+1 |
规划:分析已知信息,决定下一步行动 |
t+1 | 模型生成 Action t+1 |
执行新工具调用 |
该机制完全依赖 长上下文 + 显式 ReAct 轨迹,无需外部记忆模块或向量数据库,即可实现多跳推理中的信息累积与策略调整。
五、数据筛选与动态RL
WebSailor-V2 的训练系统会根据模型在 RL 训练过程中的实时表现(如获得的 reward 高低、策略熵 entropy 的变化),自动调整用于训练的数据——包括生成新的合成数据、剔除低质量样本,从而形成一个“数据随策略进化”的闭环机制。
1. “训练动态”指什么?
- Reward:每条轨迹(trajectory)最终是否成功回答问题(pass@1 判定),决定其 reward 值(如成功=1,失败=0 或部分奖励)。
- Entropy:策略输出动作的不确定性。高 entropy 表示模型仍在探索,低 entropy 表示趋于确定性(可能过早收敛)。
- 这些指标在训练过程中被持续监控(见 Figure 4 和 Figure 7)。
2. “动态合成”是什么意思?
- 系统不是一次性准备好全部训练数据,而是在 RL 训练过程中,根据当前策略的弱点,有针对性地生成新数据。
- 例如:如果模型在“多条件交叉验证”类问题上 reward 持续偏低,系统会从 SailorFog-QA-V2 图谱中采样更多含环状结构、多线索依赖的子图,生成对应 QA 对,补充到训练集中。
- 这依赖于 SailorFog-QA-V2 的程序化生成能力(非人工标注),可按需批量合成。
3. “动态过滤”是什么意思?
- 并非所有 rollout 轨迹都用于 RL 更新。
- 系统会过滤掉低质量负样本,例如:
- 因长度超限(>128k)而中断、未输出 final answer 的轨迹;
- 工具调用格式错误、逻辑混乱的轨迹。
- 论文明确指出:不加过滤会导致“格式崩溃”(format collapse),即模型学会输出无效格式以规避惩罚。
原文依据(Section 4.2):
“We selectively exclude certain negative samples from the loss calculation, for instance, those that do not yield a final answer because they exceed a length limit.”
4. 为什么这样做?
- 解决 reward 稀疏问题:通过合成更匹配当前策略能力边界的数据,提高成功轨迹比例,使 RL 信号更密集。
- 防止过拟合/崩溃:过滤噪声数据,保持训练稳定性。
- 实现数据-策略协同进化:策略变强 → 数据难度提升 → 策略进一步提升。
总结
“根据训练动态动态合成与过滤训练数据” = 用 RL 训练过程中的反馈信号(reward/entropy)作为“指南针”,实时调控数据生成与筛选,使训练数据始终处于“略高于当前模型能力”的最优难度区间,从而高效推动策略进化。
这是一种 数据驱动的自适应课程学习(adaptive curriculum learning)机制,是 WebSailor-V2 超越静态数据训练的关键。
更多推荐
所有评论(0)