「能不能先给我一批测试数据?」这句话在项目推进到一半时出现的频率很高。原因也很实在:生产数据不能拿来测、新业务还没有历史数据、有些长尾场景在真实数据里压根没出现过几次。数据不够,是很多 Agent 项目从演示走向上线时撞到的第一堵墙。
合成数据看起来是个直接答案,但它有个反直觉的特点:造得不好,比没有更麻烦。分布跑偏会让模型学错方向、模型自噬会让效果一代不如一代、合成数据混进评测集会让分数虚高——这些问题在报表上看不出来,直到上线那一刻才爆发。
先把这篇在站内的位置说清楚,避免和已有几篇混在一起:数据质量门禁 管的是已经进来的数据(空值、重复、异常先拦住);数据脱敏检查 管的是Agent 自己别泄露数据;嵌入模型与向量库选型 管的是数据进来之后怎么被检索。这一篇讲的是更前面的一段:数据本身从哪来。
一、什么时候真的需要合成数据
不是所有「数据不够」都需要造数据。先把场景分清楚,能省掉大半无效工作:
- 测试与压测造数。生产数据不能直接用于测试(隐私、合规、误操作风险),但又需要贴近真实的量级和分布。这是最常见的场景。
- 冷启动。新业务、新品类、新渠道没有历史样本,要先用一批「看起来合理」的数据把流程跑通。
- 长尾与边界覆盖。真实数据里罕见情况只出现几次,不足以训练或验证。这里合成数据的价值最高——它是唯一能定向补「少数情况」的手段。
- 隐私替代。真实数据不能出域、不能给第三方、不能进外部模型,但又需要对方用「像真的」的数据做联调。
反过来,有几种情况不该用:真实数据已经足够(此时合成只会引入噪声);结论要对外部事实负责(市场规模、政策口径这类必须有出处的数据,合成等于编造);你要验证的是真实世界的分布(用自己造的数据验证自己的假设,是典型的自证循环)。
二、四条生成路线怎么选
路线一:模板加规则
用脚本按字段模板批量生成,配合取值规则(枚举、范围、格式、关联约束)。优点是可控、可复现、成本几乎为零;缺点是「太整齐」,很难覆盖自然语言的多样性。适合结构化字段——订单号、金额、时间、状态码、地址这一类。
路线二:LLM 生成
让模型按提示词批量生成文本、对话、工单、评论、摘要这类非结构化内容。优点是最灵活,也最擅长补长尾;缺点是分布容易塌缩(生成一百条,读起来像一条)、会出现事实错误、成本随量线性上升。适合文本密集型场景。
路线三:真实样本改写(数据增广)
拿少量真实样本做变换:换实体(人名、地名、机构名)、换措辞、换格式、换语序。它保住了真实分布的骨架,这是最大的价值;风险是改写过头会破坏语义,或者变换规则太规律而被模型学成捷径。适合已有少量真实数据的场景,通常也是性价比最高的一条。
路线四:仿真与模拟器
用时序模型、业务流程引擎或物理模拟器生成数据。这条路线成本最高,但唯一能生成带因果与时序关系的数据。风控的模拟交易、系统的压力回放,都属于这一类。
选路线的顺序建议:先问数据是结构化还是非结构化(决定要不要模板)→ 再看手上有没有真实样本(有就优先改写)→ 最后看需不需要时序与因果(需要才上仿真)。大多数团队只需要前两条路线的组合。
三、质量四道关
- 去重。合成数据最大的质量问题是「看似很多、实则一条」。要做近似重复检测(不只是完全相等),并检查模板塌缩——如果生成一千条、前十个字都一样,说明模板或提示词太窄了。
- 分布对齐。把合成数据的分布和真实数据(或目标分布)比一比:关键字段的取值范围、类别占比、长度分布。如果合成数据里全是「标准答案」,它就等于没有难度。
- 标注一致性。如果合成数据带标签,标签必须是生成规则的一部分,而不是事后补的。可行做法是:同一批样本用两套独立规则判定,看冲突率。
- 人工抽检。全量人工不现实,但要按批次抽样,重点看长尾样本和边界样本——这两类最容易生成错误却最不容易被发现。抽检的组织方式可参考 人工复核抽检那篇:不是每条都看,但关键样本不能漏。
四、两个必须知道的风险
风险一:模型自噬
用模型生成数据、再用这些数据训练或调优模型,偏差会被逐代放大,分布越来越窄。典型表现是:效果一开始很好,几轮之后开始退步,而且退步的方向很一致。做法是保留一批真实数据锚点不参与合成,每一轮都用它检验分布有没有漂移。
风险二:评测集污染
合成数据如果混进评测集,等于自己出题自己判卷。要求很简单也很硬:评测集与生成用的数据、以及被测对象见过的数据,必须在物理上分开存放,并且记录来源。评测集怎么建,可参考 Agent 评测那篇 和 评测样本怎么建。
五、五个最容易踩的坑
- 把合成数据当真实数据的替代品。它补充样本,不替代样本。凡是「真实性」本身就是需求的地方,合成都不可用。
- 一次生成、永久复用。业务和话术在变,一年前生成的样本会慢慢失效。要么定期重造,要么至少记录生成时点。
- 不做去重就统计量级。「我们造了十万条」这句话在没有去重之前没有意义。
- 生成时不留溯源信息。每条数据至少要知道:哪条路线生成的、什么时间、用什么规则或提示词版本。否则出问题无法回滚。
- 用合成数据做容量评估。压测要的是真实分布下的性能,合成数据算出来的容量结论参考价值有限,方法见 Agent 压测与容量评估。
六、优缺点与适合人群
优点:解决「没有数据就开不了工」的僵局;能定向补长尾和边界,这是真实数据做不到的;在隐私受限场景里,是唯一能对外交付的联调数据;成本远低于采集真实数据。
缺点:分布容易偏离真实世界;质量校验本身要花不少人力;容易产生「看起来没问题」的假象;用错地方会得出错误结论且难以察觉。
适合谁:要做测试与压测但拿不到生产数据的团队;做隐私敏感业务、数据不能出域的团队;需要覆盖罕见长尾场景的方向(风控、医疗、工业质检);以及需要给第三方提供联调数据的项目。
不适合谁:真实数据已经充足、只是懒得整理的团队(先做 数据质量门禁 更有价值);以及结论必须引用真实外部事实的研究型工作。
总结
- 定位:合成数据解决的是「数据从哪来」,和已有的数据质量门禁、脱敏检查、向量库选型各管一段,不重叠。
- 四类场景:测试造数、冷启动、长尾覆盖、隐私替代;真实数据够用或结论要对外负责时,别用。
- 四条路线:模板规则(结构化)、LLM 生成(非结构化)、真实样本改写(有少量真数据)、仿真(要时序因果)。多数团队用前两条组合即可。
- 质量四道关:去重、分布对齐、标注一致性、人工抽检。
- 两个风险:模型自噬(留真实锚点)和评测集污染(物理隔离)。
- 底线:合成数据是补充不是替代;没有溯源信息的合成数据,出问题时无法回滚。
最后一句:造数据的门槛不高,难的是知道自己造出来的到底像不像真的。如果一支团队没有能力校验合成数据的质量,那它大概率也没有能力用好真实数据。
0 条评论