你以为你在用不同的数据集训练模型?谱系图告诉你:它们都是同一棵树上的枝条
你有没有碰到过这种情况:精心挑选了五六个"不同来源"的后训练数据集,混在一起训了一轮,结果发现模型的表现跟只用一两个数据集差不多——边际收益几乎为零。问题不在模型,而在数据:你选的那些数据集,其实都在同一棵演化树上,共享着大量上游源。你以为的"多样性",只是同一批数据的反复改写。
这就是上海人工智能实验室 OpenDataLab 团队这篇论文要解决的核心问题。他们把"数据谱系"这个数据库领域的经典概念引入了 LLM 生态,用多智能体框架自动重建了 430 个后训练数据集的演化图谱,揭示了两个被社区长期忽视的系统性风险:结构冗余和基准污染传播。更实在的是,他们基于谱系图构建了一个 570K 的多样性导向数据集,仅用不到一半的体量就打败了 1.2M 的基线——Vendi Score 452.44 vs 437.76,Centroid Distance 0.6385 vs 0.6271。
说实话,这篇论文的价值不在于某个单一算法的突破,而在于它给了社区一个全新的视角:后训练数据不是一堆散装的原材料,而是一张有脉络、有路径、有隐患的演化网络。你不在脉络上做数据策划,就是在盲目堆料。
📖 论文信息
- 标题:Tracing the Roots: A Multi-Agent Framework for Uncovering Data Lineage in Post-Training LLMs
- 作者:Yu Li, Xiaoran Shang, Qizhi Pei, Yun Zhu, Xin Gao, Honglin Lin, Zhanping Zhong, Zhuoshi Pan, Zheng Liu, Xiaoyang Wang, Conghui He, Dahua Lin, Feng Zhao, Lijun Wu
- 机构:上海人工智能实验室 OpenDataLab、中国科学技术大学、上海交通大学
- 日期:2026年4月12日
- 链接:arXiv:2604.10480
- 代码:github.com/Leey21/data-lineage
- 项目主页:arena.opendatalab.org.cn/data-lineage
🤔 为什么需要数据谱系?
后训练数据是 LLM 能力的核心引擎,这话已经不新鲜了。从 LIMA 的"1K 高质量数据就够了"到各种 SFT/RLHF 数据配方,社区对"数据质量"的讨论很多,但对"数据从哪来"的追踪几乎没有。
现实是,现代后训练语料库很少从零构建。绝大多数数据集都是站在前人肩膀上——通过语义演化(用 LLM 改写原有数据)、知识蒸馏(从强模型输出中提取推理链)、结构化融合(把多个数据集拼在一起)等方式递归派生出来的。这个派生过程形成了密集的依赖网络,但社区完全缺少系统性的机制去记录和追踪这些依赖。
缺乏谱系透明度带来了两个实打实的风险:
结构冗余——当多个数据集隐式继承了重叠的上游源,下游语料库就在语义上趋同了。你加了更多数据,但有效的多样性并没有增长。边际价值递减,训练成本却在增加。
基准污染传播——更隐蔽也更危险。如果某个上游数据集不小心包含了基准测试的样本,那所有继承它的下游数据集都会被污染,而下游的使用者完全不知情。你以为在做公平评估,其实模型早就"偷看"过答案了。
说到这个,Data Provenance Initiative(MIT Media Lab 牵头)之前做过大规模审计——他们审了 1800+ 个数据集的许可和归属问题。但那边的关注点是法律合规和许可链追踪,这边关注的是数据演化路径和系统性风险,视角互补。还有 LiveBench 那篇工作,专门解决评估时的测试集污染问题,思路是不断更新基准让模型来不及"偷看"——但这是从评估端堵漏,谱系分析是从训练数据端溯源,两条路都需要。
🏗️ 多智能体框架:四个Agent各司其职
先说清楚数据谱系的形式化定义。它被建模为一个有向图 \(\mathcal{G}=(\mathcal{V},\mathcal{E})\),其中节点 \(\mathcal{V}\) 对应后训练数据集,分为两类:内部节点(有可识别的上游源,可递归追踪)和叶节点(终端数据集,没有上游源,是演化链的"根")。有向边 \(\mathcal{E}\) 表示继承依赖,边 \((v_{i},v_{j}) \in \mathcal{E}\) 表示上游数据集 \(v_{i}\) 参与了数据集 \(v_{j}\) 的构建。
有了形式定义,问题就变成了:怎么从非结构化的数据集文档(README、论文、博客)中自动提取出这些边?这就是多智能体框架要干的事。整个流程分四步,由四个专门化的 Agent 依次处理:

图2:多智能体框架概览——从非结构化文档中提取来源信息,将孤立数据集转化为演化图
第一步:候选验证
把目标数据集排入集中式处理队列,先过滤掉已处理的条目,再通过 HuggingFace API 验证可用性。一个有意思的细节是,他们会交叉比对 HuggingFace 的时间戳和相关论文的发布日期,取较早者作为规范发布日期。只分析 2020 年之后发布的数据集——因为后训练数据集基本是 2020 年后才大规模出现的。
第二步:多源信息检索
获取 HuggingFace README 后,溯源智能体解析文档发现外部资源(GitHub 仓库、技术博客、关联论文),然后派提取智能体去获取这些外部内容,过滤结构噪声后整合为统一的资源上下文。
第三步:语义源推断与提取
这是最关键的一步。追踪智能体并行识别源数据,区分"真实源"和"偶然提及"——这很重要,README 里提到某个数据集不代表就真的用了它。提取结果被形式化为结构化 JSON 记录 \(\langle S, R, C, E \rangle\),其中 \(S\) 是源祖先、\(R\) 是派生关系类别、\(C\) 是置信度、\(E\) 是支持证据。
派生关系 \(R\) 分为五类:语义演化、CoT蒸馏、合成生成、结构化融合、直接包含/子集。
第四步:聚合、解决与递归扩展
聚合智能体池化和去重提取记录,用检索增强的解决模块把非正式别名规范化为 HuggingFace ID。然后修剪时间倒错的边(后发布的不能是先发布的前置源)和低置信度的幻觉边。整合元数据后生成语义概要,将上游源提交到队列继续递归处理。
整个图构建用的是深度优先搜索(DFS)遍历,在叶节点处终止。低置信度的提取会被路由到人工审核。
Agent 选型的工程直觉
这个框架的 Agent 选型挺有讲究的,不是随便选的:
| Agent | 模型 | 选型理由 |
|---|---|---|
| 溯源智能体 | GPT-5.1 | 精确指令遵循,低幻觉 |
| 提取智能体 | Gemini-2.5-Flash | 高速处理大量文本 |
| 追踪智能体 | GPT-5.1 | 精确关系提取 |
| 聚合智能体 | Gemini-2.5-Pro | 强推理+网络检索解决歧义 |
速度和精度的分治——文本抓取用 Flash 快速扫,关系判断用 GPT-5.1 保证准确,歧义消解用 Pro 搞定复杂推理。这个分工方式在工程上确实合理。
坦率的讲,我对"多智能体"的包装稍微有点保留。四个步骤是严格串行的流水线,不是真正的多轮协商或迭代精炼。叫"多阶段流水线"可能更准确。但这个不影响方法本身的有效性——流水线里每个阶段的任务设计确实精当。
📊 演化图谱:430个节点、971条边的故事
从 83 个高影响力种子数据集出发,框架重建了包含 430 个数据集、971 条继承边的演化图。这个图本身就是一个重要贡献——之前社区完全没有这种规模的谱系数据。

图3:部分谱系关系概览——节点大小反映下载量,颜色代表不同子网络,深色节点度数更高
两种演化模式:水平聚合 vs 垂直精炼
这是论文最有洞察的发现之一。不同领域的后训练数据集呈现出截然不同的演化拓扑:
| 指标 | 通用领域 | 数学领域 | 代码领域 | 科学领域 |
|---|---|---|---|---|
| 节点数 | 285 | 99 | 98 | 44 |
| 平均深度 | 1.05 | 2.92 | 2.12 | 2.82 |
| 平均入度 | 2.51 | 3.30 | 3.78 | 3.98 |
| 平均出度 | 1.29 | 1.54 | 1.36 | 1.25 |
| 叶节点比例 | 68.42% | 38.38% | 43.88% | 47.73% |
通用领域是水平聚合范式——浅而宽,叶节点占比接近70%,平均深度才1.05。策略就是从大量来源汇集信息,覆盖广泛主题,但深度有限。打个比方,通用数据集更像自助餐厅——菜品多但每道菜不会反复精加工。
数学领域是垂直精炼范式——深而窄,平均深度2.92,hendrycks_math 出度19、gsm8k 出度14,这两个数据集作为核心锚点支撑了多代派生。从 MATH 到 MetaMathQA 到 NuminaMath-CoT 再到 OpenR1-Math-220k,一代一代精炼推理链,层层嵌套。数学数据集更像是法式料理——同一道菜经过多轮改良,每一代都在上一代的基础上提升推理质量。
这个发现有个很直接的工程含义:如果你在做数学后训练数据,不要在同一棵演化树上反复摘果子。找正交的源,或者直接回到根节点做采样——这正好是后面谱系感知数据集构建的核心思路。
跨领域依赖:代码是"中间人"
跨领域依赖矩阵揭示了一个有意思的pattern:
| 源→目标 | Math | Code | General | Science |
|---|---|---|---|---|
| General | 70.42% | 38.70% | 70.42% | 34.59% |
| Math | 44.82% | 17.80% | 9.66% | 23.24% |
| Code | 20.43% | 33.33% | 13.08% | 25.95% |
| Science | 12.50% | 10.17% | 6.84% | 16.22% |
代码领域有38.70%来自通用(捕获用户意图),17.80%来自数学(增强推理),它扮演了"功能中介"的角色——把通用领域的语义理解和数学领域的逻辑推理连接起来。
科学领域的数据最惨淡——仅44个节点,自源性只有16.22%,严重依赖其他领域的资源。这说明科学后训练数据的生态还很不成熟,大部分数据集只是从通用和数学数据中抽取了科学相关子集,缺少原生的科学推理数据。
时间趋势:通用饱和,专业增长
2024到2025年间,通用领域的新叶节点注入从41个骤降到5个,明确显示这个领域已经饱和了。但数学领域的中间节点从18涨到33,科学翻倍(6→12),说明社区正在从"广覆盖"转向"深推理"。
⚠️ 两个系统性风险:结构冗余和基准污染
结构冗余:你以为的新数据,其实是旧数据的马甲

图5:谱系子图示例——下游重叠节点和基准污染位置以红色标注
论文对17个数据集做了源交叉分析,发现冗余率最高的是 open-instruct-v1,达到46.48%——因为它包含了自身的超集。opc-sft-stage2 冗余率27.96%,codeforces-cots 23.12%。
一个典型的案例是 Fast-Math-R1-SFT:它同时纳入了 OpenR1-Math-220k 及其超集 Light-R1-SFTData,造成5.30%的冗余。你在训练时以为用了两个数据集,实际上一部分样本被重复训练了。
说实话,单个数据集5%的冗余看起来不算多,但当你混搭十几个数据集的时候,冗余是会叠加的。而且更关键的是——没有谱系图,你根本不知道冗余在哪里。传统的去重方法只能做样本级别的精确匹配或语义相似度检测,但没法告诉你"这个冗余是因为两个数据集共享了同一个上游源"。
基准污染:比你想的严重得多
这里要区分两种污染模式。显式污染比较容易发现——数据集直接包含了基准测试的样本,用 N-gram 匹配就能查出来。隐式污染才是真正的麻烦制造者——数据集本身没包含基准样本,但它继承的某个上游源包含了,污染就这样沿着谱系路径无声地传播下去。
这个部分的发现让我真的有点吃惊。论文检测了5个基准在19个数据集中的污染情况:

图6:各数据集在不同基准上的污染情况统计
几个触目惊心的数字:
- Omni-MATH 基准:
Skywork/Skywork-OR1-RL-Data泄漏率 96.80%(4265/4406),DeepScaleR-Preview-Dataset79.48%,Big-Math-RL-Verified57.97% - TruthfulQA 基准:
UltraFeedback泄漏率 99.27%(811/817) - LiveCodeBench v5:
DeepCoder-Preview-Dataset88.12%,AM-Thinking-v1-Distilled44.55%
最阴险的是隐式传播。Caco-1.3M 这个数据集并没有明确包含 Omni-MATH 的基准样本,但因为纳入了受污染的上游源,隐式继承了37.95%的 Omni-MATH 样本。你如果只用 N-gram 去重检测,根本发现不了这种链式污染——你得沿着谱系路径追溯才能定位到源头。
传统的污染检测方法(N-gram 匹配或语义嵌入检索)有两个硬伤:计算开销大——需要对每个基准样本和数据集做全量比对,而且无法映射污染在数据集之间的传播路径。数据谱系提供了一个全新的全局视角——沿着继承路径追踪污染扩散,不需要全量内容扫描就能定位上游源头。这就像流行病学中的密切接触者追踪:你不需要给全城人做检测,只要沿着感染链找到零号病人就行。
🔧 谱系感知的数据构建:从根节点采样
有了谱系图,最直接的应用是什么?做更好的数据策划。
论文提出了基于溯源的采样工作流:
- 从谱系图中筛选所有入度为0的叶节点(212个数据集),按出度排名,排除零下游使用的
- 领域过滤,保留后训练常见领域,排除利基领域和非QA格式数据,剩31个
- 格式统一为 Alpaca 格式,约8.7M样本
- 初步过滤:移除过长/过短样本和非英语数据
- 两阶段去重:精确Q匹配 → MinHash去重(128个哈希排列,阈值0.7,8-gram),最终570K
核心思路就一句话:只在根节点采样,排除所有内部演化变体。因为根节点是谱系图中没有被其他数据集派生过的原始数据源,它们之间的语义重叠最小。
多样性用两个互补指标衡量:
Vendi Score——基于核矩阵特征值的香农熵指数,衡量"有效语义簇的数量":
其中 \(\lambda_{1},\dots,\lambda_{N}\) 是矩阵 \(K/N\) 的归一化特征值,\(K_{ij}=k(x_i, x_j)\) 为余弦相似度。
Centroid Distance——衡量高维嵌入空间中的几何离散度:
结果如下:
| 数据集 | 规模 | Vendi Score ↑ | Cent. Dist. ↑ |
|---|---|---|---|
| OmniThought-0528 | 301K | 162.52 | 0.5140 |
| MiroMind-M1-SFT | 719K | 108.89 | 0.4597 |
| OpenThoughts3 | 1.2M | 133.26 | 0.4970 |
| OpenHermes-2.5 | 615K | 437.76 | 0.6271 |
| herculesv1 | 463K | 397.33 | 0.6121 |
| tulu-3-sft-mixture | 939K | 375.78 | 0.6169 |
| MegaScience | 1.2M | 373.78 | 0.6150 |
| TextbookReasoning | 651K | 283.75 | 0.5598 |
| Ours | 570K | 452.44 | 0.6385 |
570K 的数据集,Vendi Score 和 Centroid Distance 都是第一。比 1.2M 的 OpenThoughts3 高了 240+ 点的 Vendi Score,比 615K 的 OpenHermes-2.5 也高了将近15点。
不过我也要说一个这份实验的局限:论文只报告了多样性指标,没有报告在下游任务上的实际训练效果。多样性高不一定等于训练效果好——可能有些内部演化变体(如经过 CoT 蒸馏的推理链)恰恰是质量更高的数据。论文自己也承认"精炼的内部节点尚未被包含,存在大量上升空间"。这个对比有点像一个只比食材新鲜度但没比菜品口味的比赛。
还有一个值得细想的问题:570K 的数据集用了31个根节点数据集,平均每个根节点贡献了约18K样本。但有些根节点数据集可能本身质量就不高——比如某些早期生成的合成数据,虽然是"根"但质量堪忧。纯粹在根节点采样,等于放弃了所有经过人工筛选和精炼的中间节点数据。一个更合理的策略可能是:以根节点为主,但在谱系路径上质量有保证的枢纽节点做补充采样。论文把这个留给了未来工作。
📈 更多发现:谁是最有影响力的数据集?
谱系图还给出了一些有趣的排名。
出度最高的数据集(被最多下游数据集依赖):
| 领域 | Top 1 | Top 2 | Top 3 |
|---|---|---|---|
| Math | hendrycks_math(19) | gsm8k(14) | NuminaMath-CoT(13) |
| Code | TACO(11) | apps(10) | code_contests(9) |
| General | FLAN(7) | alpaca(6) | ShareGPT_Vicuna(5) |
| Science | OpenThoughts-114k(3) | camel-ai/chemistry(3) | camel-ai/physics(3) |
演化深度最深的(经过最多代派生):
- alibaba-pai/OmniThought(深度9)
- allenai/tulu-3-sft-mixture(深度8)
- zwhe99/DeepMath-103K(深度8)
OmniThought 深度9意味着它经过了9层派生——从最原始的数据源到最终形态,中间经过了9次演化。这个信息在做数据选择时非常有价值:深度越深,越可能存在隐式冗余和污染。
入度最高的数据集(来源最多的):HuggingFaceFW/fineweb 入度111,bigscience/xP3 入度79。这两个都是大规模聚合型数据集,把上百个来源融在一起——在谱系图中,它们就是冗余风险最高的节点。
💡 我的判断
这篇论文的定位很清楚:不是底层算法突破,而是工程视野的拓宽。它把数据库领域的数据谱系概念搬到了 LLM 后训练生态,用多智能体流水线做了第一张大规模的演化图谱。
亮点:
- 演化模式的分析很扎实。垂直精炼 vs 水平聚合的二分法,给了做数据策划的人一个实用的思维框架
- 基准污染传播的发现很有警示意义。96.80% 的泄漏率、隐式继承37.95%的污染样本——这些数字比任何理论论证都有说服力
- 谱系感知的采样策略简单有效。在根节点采样这个思路,工程落地成本低,不需要复杂的算法
问题:
- 多智能体框架的准确率没有系统性评估。论文没有报告提取的继承关系有多少是正确的、漏了多少、误判了多少。置信度阈值怎么定的?人工审核了哪些?这些信息缺失
- 多样性实验没有下游任务验证。Vendi Score 高不等于模型训得好,这个gap需要补上
- 图的覆盖面有限。83个种子数据集、430个节点——相比 HuggingFace 上成千上万的后训练数据集,这只是冰山一角
对工程的启发:如果你在做后训练数据策划,强烈建议在选数据之前先查查谱系图(他们的代码和数据已经开源了)。选正交的数据源比选"看起来不同"的数据源更重要。另外,如果你用了 Omni-MATH 或 LiveCodeBench 做评估,务必检查你的训练数据有没有被这篇论文标记的污染链波及。
还有一个更前瞻的思考:数据谱系不只是事后审计的工具,它完全可以嵌入到数据构建流程中。想象一下,HuggingFace 上每个数据集都标注了上游源和谱系路径,社区就有了实时的污染预警和冗余检测能力——就像软件供应链中的依赖安全扫描一样。这篇论文迈出了第一步,但真正的影响力取决于社区是否愿意采纳这种"谱系优先"的数据文化。
数据谱系这个方向,说到底是在回答一个很朴素的问题:你的数据到底从哪来? 在后训练数据集越来越像乐高积木一样互相拼接的今天,这个问题的重要性只会增长。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我