数据集治理 Dataset Curation

LLM Training Data Curation

面向大模型预训练/微调/RAG 检索场景,对原始语料进行清洗、去重、过滤、去毒、分级、打分、版本管理的全流程工程体系,是决定模型下限和上限的最关键变量(比模型架构还重要)。

详细解释

Dataset Curation(数据集治理 / 语料治理 / 数据清洗工程) 一句话定义:大家都在用相同的 Transformer 架构、相同的 GPU、相同的优化器,为什么有的模型 7B 吊打别人 70B、有的连人话都说不利索?90% 原因不在模型架构,在数据集治理——你给模型喂的是「爬虫爬来的 50% 重复、20% 垃圾广告、10% 色情暴力、10% 模板生成 SEO 垃圾页」,再牛的架构训出来也是垃圾;别人花 3 个月精挑细选、去重、打分、分级,10% 高质量数据就能顶你 100% 垃圾数据的效果。

当代大模型训练数据治理分两大阶段:(1) 预训练数据治理(Pre-training Curation)——LLaMA、GPT-3 时代的 Common Crawl 级万亿 token 清洗,决定模型底座的通用能力;(2) 后训练数据治理(Post-training Curation = SFT/DPO/RAG 数据治理)——2024 年之后的主战场,因为开源底座(Llama 3、Qwen 2.5)已经很强了,企业不需要再训底座,只要把自己的私有 SFT/DPO/RAG 语料治理好,就能得到超越通用底座的垂直模型效果。

唯元智创 提供开箱即用的「数据集治理流水线」:上传原始语料(爬虫、CSV、PDF、Word),自动执行 17 步标准化治理(规则去噪 → MinHashLSH 精确去重 → 语言过滤 → 质量打分 → 去毒 → 隐私脱敏 → 难度分级 → 多样性聚类 → Outlier 过滤 → 最终抽样),产出高质量 JSONL 数据集,同时给出治理前后 20+ 维度的质量对比报告(重复率、毒素占比、多样性分数、可读性分数等),人工零操作,几天完成过去团队几个月的工作量。

高质量 SFT 数据集治理的标准化 12 步流水线(2025 年工业界通用版本)

这是 Meta、Anthropic、Mistral 等头部公司公开披露后,整个行业抄作业的标准流水线,一步都不能少:

步骤动作工具 / 算法典型阈值 / 标准
① 原始语料合并 + 格式标准化多来源 JSONL/CSV/PDF 统一成(instruction, input, output, source, domain)字段 schema自研脚本、LangChain、Unstructuredschema 错误率 < 0.1%
② 基础规则去噪删除:长度过短/过长、乱码率高、HTML tag 残留多、重复字符多、模板比例高(如 SEO 页脚)正则、FastText 语言检测、乱码检测保留字数 100-10000 字 / 条、乱码率 < 3%、模板占比 < 50%
③ 语义去重(Exact + Near-duplicate)先 MD5 精确去重 → 再 MinHash + LSH / SimHash 近似去重 → 最后 embedding cosine 语义去重datasketch(MinHashLSH)、FAISS KNN 语义去重最终去重率:公开数据 70-90%、私有数据 30-60%;Jaccard ≥ 0.8 判定为重复
④ 隐私与 PII 脱敏识别并替换:姓名、手机号、邮箱、身份证、银行卡号、地址、公司内部敏感字段(如 SKU、客户 ID)Presidio、NER 模型、正则、企业内部词表PII 漏检率 < 0.5%
⑤ 质量打分模型(Quality Classifier / Ranker)用 1-10k 条人工标注「好/坏」样本训练二分类/排序模型(用 bge-m3 embedding + LR 或小 LLM Judge),给每条打 0-1 质量分BAAI/bge-m3 + Logistic Regression / GPT-4o-mini as Judge丢弃质量分 ≤ 0.3 的尾部 20-30%
⑥ 毒素/有害内容过滤删除色情、暴力、仇恨、违法、越狱种子、极端言论等Llama Guard 3 / OpenAI Content Moderation / 自研关键词 + 分类器毒素保留率 < 0.1%
⑦ 语言/领域分类与平衡分类各条数据的语言(中/英/日等)和领域(代码/数学/法律/客服等),调整采样比例FastText + 领域分类器目标领域占比 ≥ 60%,单领域占比不超 80%(防偏科)
⑧ 多样性子采样(Dedup & Diversity)对全量数据 embedding 后做 K-means,保证每个簇至少保留 1 条,防止聚类后只有 2-3 个主题K-Means / Farthest Point Sampling余弦相似度最近邻 ≥ 0.95 的簇内只保留得分最高的 1-2 条
⑨ 难度分级 + Curriculum Learning(课程学习抽样)每条打难度分:输入复杂度 + 输出长度 + 推理链步数 → 分简单/中等/困难三档embedding 聚类复杂度 + token 数 + CoT 检测训练时先喂 60% 简单 → 30% 中等 → 10% 困难
⑩ 数据污染检测(和 Benchmark 去重)把你的训练数据和所有你要测的 Benchmark(MMLU/GSM8K/Internal held-out)做 13-gram n-gram 重叠检测,重叠率高的删除n-gram 重叠算法、dedupe-text任何 Benchmark 的 13-gram 重合 ≥ 3 个就整条删
⑪ Train/Val/Test Split(严格时间/来源切分)不要随机 split!按时间切(1-11 月训 / 12 月测)或来源切(A 系统训 / B 系统测),防止信息泄漏时间戳字段、来源字段验证集和测试集和训练集时间/来源完全独立
⑫ 版本化归档 + 质量看板每次治理完产出 Data Card(类似 Model Card):数据量、各领域比例、重复率、毒素率、质量分分布、与上一版本 diffDVC / HuggingFace Datasets / 自研 Data Catalog每个数据集版本号、可回溯、可重跑流水线

数据治理的三大「 ROI 最高的低成本动作」(新手别一上来搞复杂模型)

动作 1:把近似重复去掉,ROI 第一。 很多团队的 SFT 数据重复率高达 60-80%(比如同一个客服意图被 1000 个用户问了,措辞几乎一样),模型学 1 次和学 1000 次没区别,纯浪费训练 FLOPs 还容易过拟合。MinHash + LSH 近似去重是零门槛技能,pip install datasketch 就能跑,100 万条数据一下午搞定,去掉 40% 重复,SFT 分数涨 5-10%,成本几乎为零。

动作 2:人工挑 100 条「最佳样本」当 Teacher 做质量打分,ROI 第二。 不要瞎写一堆启发式规则(字数越多越好这种)——花 1 个下午让最懂业务的人,从你原始语料里挑出 100 条「这就是我们想要的完美回答是什么样」的正样本和 100 条「最差的回答是什么样」的负样本,训一个最最简单的 bge embedding + Logistic Regression 二分类器,然后拿这个分类器给全量数据打分,扔了尾部 30%。这 200 条样本 + 1 小时训练的分类器,比你瞎写 50 条正则规则靠谱得多,SFT 再涨 3-5%。

动作 3:做毒素过滤 + 安全过滤,ROI 第三。 不下心混入哪怕 1% 的色情/违法样本,SFT 后模型就会有概率性触发输出违规内容,上线直接被封。Llama Guard 3 是开源最好的毒素过滤器,pip install transformers 直接用,1 条 10ms,把 7 大类(暴力/色情/仇恨/自残/违法/隐私/越狱)全过滤一遍,漏检率 < 0.1%。别等训完模型被打了安全标签再回头找原因,现在就加。

常见问题

我只有 500 条高质量人工标注数据,剩下 9500 条都是脏的爬虫/历史对话,怎么治理?先加合成数据可以吗?
数据量少是小公司的常态,正确的「小数据治理 + 合成数据组合拳」完全可以达到大公司 10 万条的效果,按四步走:(1)先把你那 500 条黄金数据做「种子提纯」——每条逐字逐句人工改到 100% 符合你要的格式/语气/逻辑,这 500 条是 Teacher,错了后面全错;(2)对 9500 条脏数据做「弱监督过滤 + 去重」:用第一步训的 bge + LR 分类器(500 条正样本足够)给 9500 打分,只保留 Top 20% 也就是 1900 条高分 + 完全去重,剩下 7600 条直接扔了别心疼——垃圾数据不如没有;(3)现在你有 500 + 1900 = 2400 条「真东西」;接下来做合成数据扩增:把这 2400 条当种子,用 GPT-4o-mini/Claude Haiku 做「风格保持 + 措辞改写 + 同义扩展 + 错误对抗样本生成」,扩 10 倍到 24000 条;合成完再用刚才的分类器打一遍分,扔了尾部 20%,剩下 19200 条;(4)最后做比例混合:最终 SFT 数据集比例 = 黄金 500(2.5%)+ 过滤干净真实 1900(9.5%)+ 高质量合成 19200(88%),总共 21600 条。这个比例在 90% 的垂直任务上(客服 / 代码 / 法务 / 医疗问诊),最终模型效果追平甚至超过用 10 万条未治理脏数据 SFT 的效果,数据治理 + 合成数据的组合是小公司弯道超车的唯一正解,别死磕爬虫量。
RAG 知识库的「检索数据治理」和 SFT 的「训练数据治理」有什么不一样的重点?
有三大核心差异,千万别拿 SFT 流水线直接套 RAG:(1)Chunking(分块)是 RAG 独有的、决定成败的第一步——SFT 不需要分块(整段整段喂),RAG 必须切 256-1024 token 语义边界对齐的 chunk,切错了检索全崩;所以 RAG 数据治理第 0 步是语义分块(Semantic Chunking + 结构感知分块,保留标题/表格/列表结构),这一步在 SFT 里没有;(2)RAG 更看重「引用可追溯性」,治理时必须给每个 chunk 挂载完整的元数据:源文档路径、页码、章节标题、作者、更新时间、权威等级(A/B/C 级),检索命中后能准确告诉用户「这句话来自哪份文档哪一页」,SFT 不要求追溯源;(3)RAG 的质量打分维度和 SFT 完全相反:SFT 喜欢长的、推理链复杂的高质量样本(越长越难分越高),RAG 喜欢短的、事实密集的、结构清晰的 chunk,太长的 chunk 会稀释语义导致召回差,所以 RAG 治理要额外加「事实密度打分」——每 100 字里包含的实体/数字/专有名词个数越多分越高,纯套话的 chunk 要扔。RAG 治理的流水线参考:格式标准化 → 结构提取(PDF/Word → Markdown 保留标题列表)→ 语义分块(512 token + 15% overlap)→ 元数据挂载 → 事实密度打分 + 去毒 → 去重 → 权威等级打标 → 索引,7 步走对了 RAG 召回率涨 20% 是起手式。
团队只有 2 个人,怎么把 12 步流水线简化到能跑起来?哪些步骤绝对不能省?
给一个 2 人团队的 MVP 极简版 5 步流水线(把 12 步压缩成 5 步,保住 90% 效果,工作量 1/3):必省 4 步(规则去噪、近似去重、毒素过滤、held-out 切分)+ 选做 1 步(质量打分)。具体流程:(1)【必做】第 1 步 规则去噪 + 格式标准化 → 2 小时,把 JSONL schema 定好,扔了字数太离谱、乱码、模板广告的;(2)【必做】第 2 步 MinHashLSH 近似去重 → 半天,datasketch 现成脚本,100 万条以内一下午;(3)【必做】第 3 步 Llama Guard 3 毒素过滤 → 2 小时,transformers 直接调用,安全红线底线;(4)【必做】第 4 步 Train / Val / Test 严格按时间切分,绝对不要随机 split → 10 分钟;(5)【选做,强烈推荐】第 5 步 人工各挑 100 条正负样本训 bge + 逻辑回归质量打分器,扔了尾部 30% → 1 天 1 个人搞定。这 5 步做完,你的数据集质量已经超过 80% 没做治理的团队了,模型效果已经是天壤之别。剩下的 7 步(PII 脱敏、语言分类、难度分级、课程抽样、数据污染检测、多样性子采样、版本化归档)等团队扩到 5 个人以后再加,按优先级一个个上,先跑通 MVP 再谈完美,比在「我要做到最完美」的内耗中拖 3 个月不上线强 100 倍。