无数据科学团队也能清洗和策划微调数据集
使用无代码工具清洗、验证和策划微调数据集的分步指南——涵盖去重、标签验证、格式检查和分布分析。
大多数微调失败的根源都在训练开始之前,也就是数据集里。数据脏,模型的输出就脏;标签前后不一致,模型的分类就不一致;训练数据和生产环境的真实输入对不上,模型上线后的表现自然好不了。
麻烦在于,数据清洗历来被当成数据科学的活儿:写 Python 脚本做去重、做统计分析看分布、搭一套定制的校验流水线。如果你是一家 AI 服务商、产品负责人,或者没有数据工程背景的独立 开发者,这一关看上去就像一堵墙。
这堵墙是可以绕过去的。下面这套 6 步流程只用无代码工具、电子表格技巧和 LLM 辅助校验,就能产出干净、可直接投入生产的微调数据集。我们见过服务商团队用这套方法在 2 到 4 小时内清完 1,000 条样本的数据集:不用 pandas,不用 Python,也不需要数据科学学位。
数据清洗为什么这么关键
以下是我们经常见到的三种场景:
场景一: 某家服务商从客户那里收集了 2,000 条客服样本,拿到手就直接开始微调。模型在他们的测试集上得到 78% 的准确率。接下来两周,他们换了各种超参数、学习率和训练轮数,这个数字几乎没动过。
场景二: 另一家服务商面对同类客户,只收集了 800 条样本,先花半天时间清洗数据,然后才开始微调。模型在难度相当的测试集上得到 91% 的准确率。
差别就在数据上。
脏数据会在训练时喂进互相矛盾的信号。第 142 条样本把输入 X 标成类别 A,第 891 条样本把几乎一模一样的输入标成类别 B,两边模型都学不牢。这类矛盾在收集阶段看不出来,到了训练阶段却是致命的。
经验法则: 每花一小时清洗数据,后面就能省下 3 到 5 小时排查模型性能的时间。
6 步清洗流程
步骤 1:格式验证(15 到 30 分钟)
动手做别的之前,先确认数据集里每一条样本的结构都是对的。这一步能拦下那些会直接导致训练失败、或者悄悄污染数据的明显问题。
需要检查的内容:
- 每条样本都带齐必填字段(输入、输出,以及训练流水线要用到的元数据字段)
- 必填字段里没有空值或 null
- 输出值符合预期类型,比如类别标签取自你预先定义好的集合,而不是随手写的自由文本
- 文本字段里没有编码乱码、HTML 标签或不可见字符
不写代码怎么做:
把数据集用电子表格打开(Google Sheets 或 Excel),然后用下面这几招:
- 缺失值:对每一列排序,空单元格会集中到最上面或最下面,标记出来逐个排查。
- 非法标签:给类别列建一个下拉校验列表,任何不在有效类别里的单元格都会报校验错误。Google Sheets 的路径是「数据 > 数据验证 > 列表项」。
- 长度检查:新增一列写
=LEN(A2),分别看输入和输出的长度,再按长度排序。短得离谱的输入(不到 10 个字符)多半是录入错误;长得离谱的输出往往夹带了复制粘贴的残留。 - 字符问题:用
=CLEAN(A2)去掉不可打印字符。如果A2 <> CLEAN(A2),说明这个单元格里藏着会污染训练的不可见字符。
用 Ertas Vault: 上传数据集后,Vault 会自动跑一遍格式校验,把缺失字段、非法标签值、编码问题和长度异常都标出来。你只要复核并修正被标记的条目,不用自己大海捞针。
典型结果: 3% 到 8% 的样本存在格式问题。修起来通常很直接:补上缺失字段、改掉类别标签里的拼写错误、清掉编码残留。
步骤 2:去重(15 到 30 分钟)
完全重复和近似重复的样本会浪费训练容量,还会让模型去背具体样本,学不到通用规律。
完全重复很好办:按输入列排序,扫一眼有没有一模一样的行。在 Google Sheets 里可以用条件格式把重复项高亮出来,路径是「格式 > 条件格式 > 自定义公式」,填入 =COUNTIF(A:A, A2)>1。
近似重复更难找,也更值得花力气。这类输入措辞略有差别,传达的信息完全一样。例如:
- 「我要怎么取消订阅?」
- 「订阅可以怎么取消?」
- 「我想取消订阅」
这三条样本教给模型的东西基本一样。数量少的时候三条都留着影响不大;可一旦数据集里有 15% 是近似重复,你的有效数据量就比你以为的少了 15%。
不写代码: 按输入文本排序后用肉眼扫。大部分近似重复排序后会挨在一起,把和上下行高度相似的行标出来即可。
借助 LLM: 每批 50 到 100 条输入,粘进 Claude 或 GPT-4o,配上这段提 示词:
Review these inputs and identify groups that are near-duplicates
(same meaning, different phrasing). List each group with the
row numbers. Only flag true semantic duplicates, not inputs
that happen to discuss the same topic.
[paste inputs with row numbers]
用 Ertas Vault: Vault 会计算所有输入两两之间的嵌入相似度,自动标出超过相似度阈值的组合(阈值可配置,默认 0.92 余弦相似度)。你只要复核这些被标出的组合,决定留哪一条。
典型结果: 人工收集的数据集里,5% 到 15% 的样本是近似重复;合成数据集里这个比例能到 15% 到 25%。每一组重复只留一条,保留质量最高的那个版本。
步骤 3:标签一致性检查(1 到 2 小时)
这一步收益最大。标签不一致是训练效果劣化的头号原因,而且不专门去找就发现不了。
问题出在哪: 不同的标注者(或者同一个人在不同的日子)会把相似的输入标成不同的类别。类别之间的边界,每个人的理解都有出入。边界情况被归到哪一类,取决于谁标的、什么时候标的。
不写代码怎么查:
方法一:分类通读。 按类别逐个筛选表格,每个类别读 20 到 30 条样本,问自己一句:「这些真的都属于这个类别吗?」把看着模棱两可或者明显放错的标出来。
方法二:易混类别对分析。 对每一对容易混淆的类别(比如 billing_error 和 refund_request),把两类一起筛出来对照着看,判断边界是否清晰、是否前后一致。
方法三:LLM 辅助复核。 这是最快的路子。每次把 50 到 100 条样本(输入加上已标注的标签)粘进一个前沿模型:
Review these labeled examples for consistency. For each example,
confirm whether the assigned label is correct or suggest a
correction. Pay special attention to:
- Examples that could belong to multiple categories
- Labels that seem inconsistent with similar examples
- Edge cases where the labeling guideline may be ambiguous
Format: Row [number]: [CORRECT / INCORRECT -> suggested label] - [brief reason]
[paste examples]
分批跑完整个数据集。凡是被 LLM 判为错误的样本,都要再过一遍人工复核。
典型结果: 5% 到 12% 的样本存在标注不一致。修正之后,模型准确率通常能提升 3% 到 8%,这是整条微调流水线里投入产出比最高的一件事。
步骤 4:分布分析(30 到 45 分钟)
训练数据的分布应该接近生产数据的分布。两者对不上,模型的置信度就会失准:在罕见类别上过度自信,在常见类别上反而发挥不好。
需要检查的内容:
- 类别分布。 统计每个类别的样本数,算出各自的占比,再和生产环境的分布(或者你能给出的最好估计)对比。
- 输入长度分布。 训练输入能代表模型上线后会见到的东西吗?如果生产环境的输入在 20 到 800 词之间,而训练数据清一色是 100 到 200 词,模型在过短和过长的输入上都会吃力。
- 时间分布。 如果数据是长期陆续收集的,检查分布有没有漂移。半年前的数据反映的模式,可能和现在的线上流量已经不一样了。
不写代码怎么做:
在电子表格里:
- 类别计数: 每个类别用一次
=COUNTIF(B:B, "category_name"),再画一张简单的柱状图。 - 长度分布: 加一列词数统计
=LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1,然后插入直方图(插入 > 图表 > 直方图)。 - 和生产数据对比: 如果手上有生产数据,把两张图并排放。从形状上看,两者应该差不多。某个类别在生产环境只占 5%,在训练数据里却占了 25%,那就是分布错配。
发现错配怎么办:
- 占比过高的类别: 删掉多出来的样本,优先删质量较低的和重复的。
- 占比不足的类别: 为这个类别补充样本(合成数据在这里很好用),或者去收集更多真实样本。
- 输入长度错配: 针对缺少的长度区间,专门造一批样本。
典型结果: 大多数人工收集的数据集里,都有 1 到 3 个类别的占比明显偏高或偏低。重新配平之后,占比不足的类别性能通常能提升 10% 到 20%,占比过高的类别几乎不受影响。
步骤 5:异常值移除(30 到 45 分钟)
训练数据里的异常值, 是那些和数据集其余部分差异极大的样本。它们有可能是合理的边界情况,本身未必有错,但对训练的影响会被放大,数据集越小越明显。
要留意的异常值类型:
- 极长或极短的输入。 98% 的输入都在 50 到 300 词,其中两条却有 2,000 词,这两条在训练时可能主导梯度更新。
- 跑题样本。 不知怎么混进数据集、和任务领域完全不沾边的输入。
- 含义模糊的样本。 连领域专家都没法有把握地给出正确标签的输入。这类样本是训练噪声,算不上有价值的边界情况。
不写代码怎么找:
- 按输入长度排序,检查头尾各 2% 到 3% 有没有异常。
- 按输出长度排序,同样查一遍。
- 在每个类别内部按字母序排序,扫一下最前和最后几条:内容上的异常值经常会被排到两端。
判断标准: 对每个异常值问一句:「模型上线后会遇到这样的输入吗?」会,就留下(同时考虑补几条类似样本,别让它太孤立)。不会,就删掉。
典型结果: 1% 到 3% 的样本属于值得删掉的异常值。单看每一条影响都 很小,和其他清洗步骤叠加起来才见效果。
步骤 6:最终人工审查(1 到 2 小时)
最后一步,是针对步骤 1 到 5 中被标记的所有内容做一次集中的人工审查,再加一轮随机抽样。
复核被标记的条目: 把前面每一步标出来的样本逐条过一遍,做最终决定:修、留,还是删。
随机抽检: 从清洗后的数据集里随机抽 30 到 50 条,逐条读完。如果 50 条里发现超过 1 到 2 个问题(错误率高于 4%),就还需要再来一轮清洗。如果只有 0 到 1 个问题,数据集可以用了。
把决定记录下来。 简单记下你定下的标注规则、处理过的边界情况、澄清过的类别定义。等以后要扩充数据集时,这份记录价值极高:它能让新增的数据和原有数据保持一致。
不同任务类型的常见数据问题
分类任务
最常见的问题: 标错标签,尤其是在类别边界上。两个概念上有重叠的类别(比如「投诉」和「反馈」),标注一定会出现不一致。 解法: 为每一条类别边界写出明确的判定标准,再拿这套标准把所有边界样本重新过一遍。
文本生成任务
最常见的问题: 输出风格不统一。有的样本用正式语气,有的很口语;有的带小标题,有的不带。模型会把这种不统一一起学走。 解法: 给输出定一份风格规范,把偏离规范的样本改写。哪怕是很小的格式差异(比如输出末尾有没有句号)也会有影响。
抽取任务
最常见的问题: 字段缺失。有的样本把目标字段全抽出来了,有的漏掉了可选字段。模型于是学到「字段缺了也没关系」。
解法: 先定清楚哪些字段必填、哪些可选。必填字段,每条样本都得有。可选字段,「没找到」要用统一的表示方式(null 还是空字符串,二选一)。
对话任务
最常见的问题: 轮次结构不统一。有的对话以寒暄开场,有的直接进入正题;有的带 system 消息,有的没有。 解法: 把对话结构标准化。轮次顺序、角色标签、system 消息格式,所有对话都套同一个模板。
时间估算
根据我们和服务商团队合作的经验,完整走完这 6 步大致要花这些时间:
| 数据集规模 | 手动清洗 | Vault + LLM 辅助 | 质量提升 |
|---|---|---|---|
| 250 条样本 | 1.5 到 2.5 小时 | 30 到 45 分钟 | 准确率 +5% 到 10% |
| 500 条样本 | 2 到 4 小时 | 45 到 90 分钟 | 准确率 +5% 到 12% |
| 1,000 条样本 | 3 到 6 小时 | 1 到 2 小时 | 准确率 +5% 到 15% |
| 2,500 条样本 | 6 到 12 小时 | 2 到 4 小时 | 准确率 +5% 到 15% |
| 5,000 条样本 | 12 到 20 小时 | 4 到 8 小时 | 准确率 +5% 到 15% |
准确率提升那一列,指的是相对于直接用未清洗的数据训练,在留出测试集上通常能拿到的增益。这部分性能完全来自清洗本身,模型、超参数和训练方法都没有变。
什么时候该清洗,什么时候该补更多数据
先清洗,如果:
- 随机抽检发现的问题超过 5%
- 你还没做过任何一轮清洗
- 学习曲线已经走平(继续加数据也不见效)
- 类别之间的数量差距超过 2 倍
补更多数据,如果:
- 数据已经很干净(标签准确率高于 96%)
- 在当前数据量下,学习曲线还在往上走
- 某些类别样本不足,而且找不到更多真实样本
- 你需要覆盖现有数据里没有的输入模式
大多数情况下,正确的顺序是:先清洗,再评估,需要的话再补数据。跳过清洗直接去收集数据的团队,总耗时往往会多出 2 到 3 倍,因为新收进来的数据只会在原有的质量问题上继续叠加。
结论
要产出干净的微调数据,你需要的是一套系统的流程、2 到 6 小时的专注投入,以及愿意逐条细读自己训练样本的耐心。数据科学团队并不是前提条件。
上面这 6 步:格式验证、去重、标签一致性、分布分析、异常值移除、最终审查,能拦下造成 80% 微调质量问题的那些毛病。用电子表格做得了,配合 LLM 复核做得了,用 Ertas Vault 内置的校验工具会更省事。
模型的上限,就是它所学数据的上限。这份时间值得提前花。
延伸阅读
- 数据质量 > 数据数量:为什么 250 个好示例胜过 10,000 个坏示例:微调中质量比数量更重要的证据
- 无需编写代码微调 AI 模型:面向非技术团队的端到端微调指南
Ship AI that runs on your users' devices.
Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.
Keep reading
从提示词工程到微调:迁移实战手册
从提示词工程迁移到微调的实用手册——何时做出切换、如何将提示词转化为训练数据,以及分步迁移过程。
2026 年最适合微调的开源模型
Llama 3.3、Qwen 2.5、Gemma 3 与 Mistral 在基准测试、显存占用、GGUF 导出和授权条款上的横向对比,并针对每一种典型使用场景给出明确的选型建议和实际可训练的尺寸范围。
模型蒸馏详解:以$0推理账单运行Sonnet级别输出
模型蒸馏完全指南——如何将Claude Sonnet等大型前沿模型的能力转移到小型本地模型中,以零持续推理成本实现可比质量。