数据合成 / Data Pipeline 彻底备战手册(补充模块对应版)
本手册定位:面向 AI Agent 求职与面试准备的专题复习资料,用于补充 AgentGuide 面试题库与项目讲述材料。 内容以公开资料、项目复盘和工程实践方法论为基础做二次整理,建议结合自己的真实项目经历进行取舍与改写。
目标:把数据合成从方法论到质量保障再到 Agentic 后训练闭环全部打透
使用建议:这份文档对应《面试备战手册_补充模块.md》的第四节数据合成。GoAfar 手册已经覆盖了 GPT-4o 教师轨迹的生成和过滤细节。这份文档查漏补缺,重点写:
- 方法论全景:Self-Instruct / Evol-Instruct / Rejection Sampling / Constitutional AI / Distilabel
- 质量保障体系:格式验证、语义验证、约束验证、多样性检查、去污染
- AgenticRAGTracer 六步流水线:从原子 QA 到多跳 QA 的完整数据构建方法
- DataFlow 框架:200+ 算子、6 个领域通用流水线、DataFlow-Agent
- 从小数据到大规模后训练的完整链路
- 小红书场景下的数据合成迁移
一、先总览:面试官在数据合成这条线上会怎么打
数据合成是 2025-2026 年后训练最核心的基础设施话题。JD 里的"agentic 后训练"重度依赖高质量合成数据。面试官会从三个层次考察:
- 方法论层:你了解哪些数据合成范式?Self-Instruct 和 Evol-Instruct 分别适合什么场景?Rejection Sampling 在 DPO/GRPO 流程中处于什么位置?
- 质量保障层:你用什么标准判断一条合成数据是否可用?格式校验、语义校验、约束校验分别管什么?
- 你做了什么:GoAfar 里的 GPT-4o 教师轨迹生成,AgentGuide 里的 LLM 知识抽取,这些都是数据合成。你能讲清楚你自己的质量控制流程吗?
二、核心知识框架
1. 数据合成的六大方法论
1.1 Self-Instruct
一句话:从少量种子示例出发,用 LLM 自动生成新的 instruction-response 对。
核心流程:
- 准备 175 条种子任务(涵盖多种任务类型)
- 每次从任务池随机抽 8 条作为 few-shot 示例
- LLM 生成新的 instruction + response
- 用 ROUGE-L 去重 + 启发式规则过滤
- 合格的加入任务池,继续迭代
适合场景:需要大量多样化 instruction 数据的冷启动阶段
和你的关联:AgentGuide 项目的"LLM 自动抽取高频知识点"就是 Self-Instruct 思路的简化版——从已有面经数据出发,让 LLM 抽取和生成结构化的知识点
1.2 Evol-Instruct(WizardLM)
一句话:不是从种子生成新 instruction,而是对已有 instruction 做复杂度演化。
两类演化方向:
- In-Depth Evolving:加深——加约束、加步骤、加推理深度、加输入复杂性
- In-Breadth Evolving:加宽——生成全新的、不同主题的 instruction
核心价值:解决了 Self-Instruct 的一个关键问题——单纯从种子生成容易塌缩到简单任务分布。Evol-Instruct 通过人工设计的演化模板把 instruction 的难度推上去。
适合场景:需要高质量复杂指令数据的场景,尤其是推理和数学
1.3 Rejection Sampling
一句话:从 SFT 模型采样多条回复,用 reward model 或 verifier 选最好的。
核心流程:
- 对每个 prompt 用当前策略模型采样 K 条回复(K 通常取 4-16)
- 用 reward model / verifier / LLM judge 打分
- 只保留得分最高的回复(或正负样本对)
- 高质量的正样本做 SFT,正负对做 DPO
在 GRPO 流程里的位置:GRPO 本身也是一种 online rejection sampling——每个 prompt 采样 G 条回复,组内比较选取好的。Rejection Sampling 更偏离线批量生成筛选。
1.4 Constitutional AI
一句话:用一组规则(constitution)让 LLM 自我批判和修正输出,不依赖人工标注。
核心流程:
- 监督阶段:用 constitution 引导 LLM 自我批判初始回复 → 修正后 → 用修正版做 SFT
- RL 阶段:用 constitution 原则做 AI feedback(而不是人工偏好),训练偏好模型
适用场景:需要对齐但标注成本高的场景。Anthropic 的 RLHF 就是用 CAI 替代了人工偏好标注。
1.5 Distilabel
一句话:开源框架,自动化生成 SFT / DPO 训练数据。
特点:提供了标准的 pipeline 抽象,可以组合 LLM 生成、过滤、评分、去重等步骤。降低了从零搭数据合成 pipeline 的工程成本。
1.6 DataFlow
一句话:北大提出的统一数据准备框架,近 200 个可复用算子,覆盖文本、数学、代码、Text-to-SQL、Agentic RAG、知识提取六大领域。
关键能力:
- operator 级别的模块化和可组合性
- 类似 PyTorch 风格的 pipeline API
- DataFlow-Agent:自动将自然语言规范转成可执行流水线
- 在 6 个领域上持续提升下游模型性能
必背对比表
| 方法 | 核心思路 | 输出类型 | 最适合 |
|---|---|---|---|
| Self-Instruct | 种子→LLM 生成新 instruction | SFT 数据 | 冷启动、多样化 |
| Evol-Instruct | 改写已有 instruction 变复杂 | SFT 数据 | 提升任务难度 |
| Rejection Sampling | 采样多条→选最好 | SFT/DPO 数据 | 质量筛选 |
| Constitutional AI | 规则引导自我批判修正 | 对齐数据 | 低标注成本对齐 |
| Distilabel | 标准化 pipeline | SFT/DPO 数据 | 工程效率 |
| DataFlow | 200+ 算子统一框架 | 全类型 | 大规模标准化 |
2. 数据合成的质量控制:五大防线
这是面试官最关心的部分——不是"你生成了多少数据",而是"你怎么保证数据质量"。
防线一:格式验证
- 工具调用 JSON 是否合法
- 参数类型是否匹配 schema
- 必填字段是否完整
- 输出格式是否符合预期(如 ShareGPT 格式)
防线二:语义验证
- 生成的轨迹是否逻辑自洽(不会前面查了 A 餐厅,后面却推荐了 B)
- instruction 和 response 之间的语义对齐
- 中间推理步骤是否连贯
防线三:约束验证
- 对于可验证任务,用 verifier 直接校验(这是 GoAfar 的独特优势——OR-Tools 验证路线可行性)
- 数学题用答案匹配验证
- 代码生成用测试用例执行结果验证
防线四:多样性检查
- 防止数据塌缩:所有生成样本不能都走同一条路
- 指标:embedding 聚类覆盖度、n-gram 多样性、任务类型分布
- 做法:周期性检查生成样本的分布,发现集中在某几类就调整 prompt 或种子
防线五:去污染
- 确保测试集不泄露到训练集
- n-gram 重叠检测
- 和公开 benchmark 的答案对比去重
- 时间切分(用模型发布时间之前的数据做训练)
面试话术
"质量控制不是一步做完的事,而是贯穿整个数据合成 pipeline 的五道防线。从最基础的格式校验,到语义和逻辑自洽性检查,再到约束验证和多样性监控——每一道防线都是在把'LLM 随机采样'转变成'可信训练数据'。"
3. AgenticRAGTracer 的六步数据构建流水线
这是 2026 年数据合成在 Agentic RAG 领域的标杆实践,面试中引用来展示你对"怎么做高质量合成数据"的理解深度。
完整六步流水线
Step 1: Initial Data Filtering ← 保证多样性 & 避免与已有基准重叠
↓
Step 2: Atomic QA Generation ← LLM 从单篇文档生成原子 QA
↓
Step 3: Atomic QA Filtering ← 启发式 + 双重 LLM 检验
↓
Step 4: MultiHop QA Generation ← "用答案串文档"生成多跳 QA
↓
Step 5: MultiHop QA Filtering ← 语义/逻辑审核 + 必要性/可解性三检
↓
Step 6: Final Filtering & Human ← Wikipedia SPARQL 消歧 + 三人独立审核核心设计洞察
1. 原子 QA 的生成规则(Step 2)
- Atomicity(原子性):每个 QA 只围绕一个不可分割的事实
- Verifiability(可验证性):答案必须是数值/日期/唯一实体名
- Time Specificity(时间显性):时间敏感信息必须带具体年份
- Answer Uniqueness(答案唯一性):问题要特异化到答案唯一
2. 原子 QA 的三层过滤(Step 3)
- (a) 启发式:答案过长(≥10 tokens)、含 and/or/&、纯数字答案 → 丢弃
- (b) LLM 必要性检验:不给文档模型能否答出?能答出就丢弃(避免参数知识 shortcut)
- (c) LLM 可解性检验:给文档模型能否答出?答不出就丢弃(问题有歧义或文档不充分)
→ 只有"不给文档答不出 + 给文档能答出"的 QA 才保留
3. 多跳生成——"用答案串文档"(Step 4) 核心思路:前一步的答案作为检索 query → 检索新文档 → 从新文档生成新原子 QA → 合并成多跳 QA
4. Dependency Irreducibility(依赖不可约简)——最严格的验证(Step 5) 枚举所有"缺 1 个文档"的子集,逐个检查模型是否仍能答对。只要有任何一个组合能答对,说明被去掉的那个文档其实不必要,这道题废弃。
面试时怎么用
"AgenticRAGTracer 的数据构建方法对我启发很大。它的核心思想是:一条高质量的多跳推理数据不是拼出来的,而是从原子事实经过严格验证逐跳构建出来的。每一步都有专门的过滤——不给文档答不出、给文档必须能答出、去掉任何一个文档就必须答不出。这种'逐级验证'的思路,和我在 GoAfar 里做对抗性干扰项的思路是共通的——数据不是在生成阶段决定的,是在验证阶段决定的。"
4. 从数据合成到 Agentic 后训练的完整链路
标准 Pipeline
种子数据 → 教师模型生成轨迹 → 质量过滤(五道防线)→ SFT 训练 →
采样生成回复 → Reward Model / Verifier 打分 → 构造 preference pair →
DPO / GRPO 训练 → 评估 → 收集失败 case 回流 → 下一轮数据合成你 GoAfar 里的实际链路
POI 数据 (127,978) + 用户行为 (38,580) → GPT-4o 教师 Agent 生成纠错轨迹 →
格式 + 语义 + OR-Tools 约束验证 → SFT (1,774条) → DPO (300对) → GRPO (1,754条)面试话术:
"我在 GoAfar 里走的是'可验证奖励 + 教师轨迹 + GRPO'这条路。因为有 OR-Tools 做约束验证,数据合成中最大的优势是每一条轨迹的可验证性——不是靠人工判断好坏,而是用求解器直接验证路线是否满足约束。这个闭环比纯 LLM-as-judge 更可靠,因为 verifier 是确定性的。"
三、高频面试题 + 高强度答案
Q1. Self-Instruct 和 Evol-Instruct 的区别是什么?各适合什么场景?
主答模板
Self-Instruct 是"从种子长出新的"——从少量种子示例出发,让 LLM 迭代生成新的 instruction-response 对。适合起步阶段需要大量多样化数据的场景。但它的局限是容易塌缩到简单任务分布——因为 LLM 倾向于生成自己擅长回答的问题。
Evol-Instruct 是"让已有的变复杂"——对已有 instruction 做深度演化和广度演化。它不生成新种子,而是把简单问题变复杂(加约束、加步骤、加推理深度)。适合已经有了基础数据但需要提升复杂度的场景。
两者不是替代关系——通常先 Self-Instruct 做量,再 Evol-Instruct 做质。
Q2. Rejection Sampling 在整个后训练流程中处于什么位置?
主答模板
Rejection Sampling 通常放在 SFT 和 DPO/GRPO 之间。做完第一轮 SFT 后,用当前的 SFT 模型对训练 prompt 采样 K 条回复,用 reward model 或 verifier 打分,只保留最高分的回复做下一轮 SFT——这叫 Rejection Sampling Fine-tuning。同时,最高分和最低分的回复可以构成 preference pair,供给 DPO 训练用。
在 GRPO 的流程里,GRPO 本身就是一种 online rejection sampling——每个 prompt 采样 G 条回复,组内比较选出好的。区别在于:Rejection Sampling 是离线批量做的,GRPO 是训练过程中在线做的。
Q3. 你在 GoAfar 里用 GPT-4o 生成纠错轨迹,你怎么保证这些轨迹的质量?
主答模板
质量保证不是一步完成的。我用了三层过滤:
- 格式层:轨迹的工具调用 JSON 是否合法、参数是否完整、轨迹长度是否在合理范围内
- 约束层(最关键的一层):OR-Tools VRPTW 求解器验证最终路线的可行性——这是确定性的,不是 LLM judge 打分。如果教师模型生成的轨迹最终路线不可行,这条轨迹直接丢弃
- 语义层:LLM 对轨迹的逻辑一致性做抽检——前面的步骤和后面的步骤是否自洽、纠错行为是否合理
其中第二层是 GoAfar 场景的独特优势——因为有可验证的硬约束,数据质量保障比纯粹靠 LLM judge 可靠得多。
Q4. AgenticRAGTracer 的 Dependency Irreducibility 是什么意思?为什么那么重要?
主答模板
Dependency Irreducibility 是多跳 QA 数据构建中最严格的验证标准:枚举所有"缺 1 个文档"的子集,逐个检查模型是否仍能答对。只要有任何一个组合能答对,说明被去掉的那个文档其实不必要,整道题废弃。
这个验证的重要性在于:很多所谓的"多跳"QA 其实不需要真正多跳检索——模型通过参数知识或推理 shortcut 就能答对。如果不对每条数据做这种严格验证,训练数据里就会混入大量"伪多跳"样本,模型学到的也不是真正的多跳检索能力。
Q5. 如果在小红书为 C 端 Agent 合成训练数据,你的种子数据从哪来?
主答模板
种子数据的源头有四类:
- 真实用户日志(脱敏后):用户的搜索 query、点击行为、收藏、对话历史——这是最真实的需求分布
- 平台内容:笔记、评论、标签、地点——提供真实的多模态语境
- 专家标注的黄金任务集:覆盖典型用户场景的任务模板,比如"规划周末约会"、"推荐亲子餐厅"
- 对抗性构造:针对已知的失败模式(时效性错误、幻觉推荐、主观偏见)专门构造负样本
关键是:真实日志提供分布,专家标注提供准确性,对抗性构造提供鲁棒性——三者缺一不可。
Q6. DataFlow 和传统逐个写脚本的数据处理方式有什么本质不同?
主答模板
传统的做法是用临时脚本拼接——一个脚本做数据清洗,一个脚本做格式转换,一个脚本做过滤。每个项目都要重写一遍,不可复现,也很难优化。
DataFlow 的核心突破在于把数据准备抽象成 operator 级别的可组合单元——近 200 个标准化算子,像搭积木一样构建数据流水线。更关键的是它的 DataFlow-Agent:你可以用自然语言描述你想要的数据处理流程,Agent 自动选择算子、组合 pipeline、迭代验证。
这背后的设计哲学是:数据工程的竞争力不在于"能不能生成数据",而在于"生成的数据能不能被系统化地管理、复现和优化"。
四、高频总追问清单
A. 方法论
- Self-Instruct 的核心流程是什么?为什么需要多样性过滤?
- Evol-Instruct 的 In-Depth 和 In-Breadth 分别怎么做?
- Rejection Sampling 和 GRPO 的 online sampling 有什么本质区别?
- Constitutional AI 的监督阶段和 RL 阶段各自解决了什么问题?
- DataFlow 的 200+ 算子覆盖了哪些领域?
B. 质量保障
- 五道防线分别管什么?哪一道是你认为最不可替代的?
- 合成数据的 mode collapse(模式塌缩)怎么检测和防止?
- 如果教师模型本身生成的轨迹有错误,你怎么处理?
- 去污染除了 n-gram 重叠检测,还有什么方法?
C. AgenticRAGTracer
- 原子 QA 为什么要求"答案必须是数值/日期/唯一实体名"?
- "不给文档答不出+给文档能答出"这个双重验证的设计动机是什么?
- Dependency Irreducibility 怎么实现?只去掉一个文档够吗?
D. 和你的项目对接
- GoAfar 的 GPT-4o 教师轨迹生成中,过滤比例大概多少?主要被什么条件挡掉?
- AgentGuide 的"LLM 自动抽取高频知识点"算是哪种数据合成方法论的简化版?
- 如果让你在 TinyClaw 里用数据合成改进 Skill,你会怎么设计数据 pipeline?
五、串联叙事:面试时最强的数据合成主线
"我对数据合成的理解,不是在某个项目里用了一次 GPT 生成数据,而是从方法论到质量保障到闭环迭代有一个比较完整的框架。在 GoAfar 里,我用 GPT-4o 作为教师模型生成纠错轨迹,然后用 OR-Tools 做约束验证——这是我最依赖的质量防线,因为它是确定性的,不是 LLM judge 打分。在 AgentGuide 里,我用类似 Self-Instruct 的思路让 LLM 从面经数据中抽取知识点。
方法论上,我理解 Self-Instruct 和 Evol-Instruct 分别解决'量'和'质'的问题,Rejection Sampling 和 GRPO 都是在做'采样筛选'但一个离线一个在线。AgenticRAGTracer 的六步流水线给我启发最大的是它的验证哲学——每一步都双重校验,最后还有 Dependency Irreducibility 这种极端严格的标准。这让我深刻意识到:数据合成的核心不是生成,而是验证。一条数据能不能用,不是在生成阶段决定的,是在验证阶段决定的。"
六、最后:数据合成准备到什么程度,才算真准备好了?
你至少要做到 6 件事
- 能讲出六种数据合成方法的核心思路和适用场景
- 能讲出五道质量防线,并且能说清 GoAfar 里用了哪几道
- 能讲出 AgenticRAGTracer 的六步流水线和 Dependency Irreducibility 的意义
- 能画出从种子数据到后训练的完整链路
- 能回答"你的合成数据会不会让模型过拟合教师模型的风格"
- 能把小红书场景的数据合成需求讲清楚:种子数据从哪来、质量用什么验证
如果你想让面试官"折服",你要主动讲出来的 3 句话
- "数据合成的核心竞争力不在于生成——任何人都能用 GPT 生成一堆数据——而在于验证。每一道质量防线都是在把'随机采样'转变成'可信训练数据'。"
- "GoAfar 的独特优势是 OR-Tools 作为确定性 verifier——这让我的合成数据质量保障比纯 LLM-as-judge 的方案更可靠。但这也意味着我的方法论是否能迁移到没有 hard verifier 的场景,是我需要在面试中诚实地讨论的。"
- "AgenticRAGTracer 的 Dependency Irreducibility 让我意识到:真正的高质量训练数据,必须经过'去掉任何一个支持证据就不可解'这种级别的严格验证。数据不是生成出来就够的,是验证通过的才算。"