跳到主内容

数据去重是怎么做的?精确与模糊两档

2026-10-18 发布 来源:我告诉你AI导航 阅读

给大模型的训练语料去重,通常分两档:精确查重和模糊查重。精确查重找完全相同的副本,模糊查重找高度相似的洗稿内容。两档的算法成本差一个量级,用法上是先精确后模糊,层层收紧,这是数据去重的标准打法。

给大模型的训练语料去重,通常分两档:精确查重和模糊查重。精确查重找完全相同的副本,模糊查重找高度相似的洗稿内容。两档的算法成本差一个量级,用法上是先精确后模糊,层层收紧,这是数据去重的标准打法。

精确查重怎么跑

精确查重的流程三步。进来的是文档集合,先对每篇算一个指纹,常用哈希算法把整篇内容压成一个短串。发生的是指纹比对,相同内容的指纹必然相同,用哈希表一查就是。出去的是重复组,每组保留一份,其余标记删除。

指纹算法本身也在演化。早期的整篇哈希对空格和标点敏感,一个字符不同就判不同,后来加入归一化处理,先统一大小写、压缩空白再算指纹,命中率明显提高。

文档级跑完可以下沉到段落级。把每篇切成固定长度的段落,逐段算指纹,跨文档比对。这一步能抓住整篇不同、大段雷同的洗稿初级形态。语料质量打分通常排在去重之后,避免重复副本把质量分布带偏。

模糊查重的近似思路

模糊查重要解决的是“不完全一样但几乎一样”。常用思路是局部敏感哈希:把文档切成小片段,分别算指纹,只要两篇有足够比例的片段命中,就判为近似重复。进来的是文档和阈值,发生的是分片加索引加比对,出去的是近似重复组。

阈值的选择是这档的核心矛盾。设得松,洗稿内容漏网,它们继续占用训练预算;设得紧,合理改写被误伤,多样性受损。没有万能阈值,通常按数据来源分设几套,再抽样人工抽查兜底,这也是标注规范要覆盖的判断口径。

分片大小是另一个参数。切太碎,短文档的命中数不够,统计不稳;切太整,近似能力下降。实践中常按文档长度动态调整分片长度,长文档切大段、短文档切小段。

两档之间的取舍

精确档便宜,跑全量语料也就几个小时,应当无条件先做。模糊档贵,分片和索引都是重活,超大规模语料上要算清楚性价比。折中做法是分层抽样:全量跑精确,抽样评估模糊档的命中率,再决定模糊档是否值得全量上。

两档的收益也不同。精确档主要省算力,模糊档主要治复读。如果模型生成时频繁复读固定段落,多半是模糊档没做到位。中文语料里洗稿内容多,模糊档的优先级比英语数据场景更高。

两档的成本和用处不在一个量级,什么时候上哪一档,看这张表。

档位成本解决什么怎么用
精确查重便宜,跑全量语料也就几个小时省算力无条件先做,全量跑
模糊查重贵,分片和索引都是重活治复读超大规模上先算清性价比
分层抽样折中只跑抽样,不全量用样本估模糊档的命中率全量精确加抽样评估,再定模糊档是否全量

规模变大后的调整

语料规模上去之后,单机跑不动,要拆。常见做法是按哈希分片,把语料切成若干桶,桶内独立查重,跨桶的重复靠分片策略兜住大部分。索引也要换更省内存的结构,牺牲一点召回换可行性。

去重结果要留档。每轮删了哪些、命中率多少,都记录下来,回滚和审计时用得上。数据团队踩过的最常见的坑,是去重脚本升级后没留记录,出问题无法追溯,只能整批重跑。

增量场景另有一套逻辑。新数据每天进来,全量重跑不现实,通常新数据先和存量建索引比对,重复的直接拦在门外。日常工具里,豆包和文心一言背后的数据管线都按增量思路运转,这也是数据质量过滤能长期维持的原因。

速查表:去重两档=精确哈希查重、模糊近似查重;顺序是先精确后模糊;阈值按来源分设;增量场景先和存量比对再入库。

关于数据去重方法,问得最多的三个

  • 模糊查重会把合理引用也算重复吗?会,引用片段短、占比低,通常设最小命中比例来放过短引用。
  • 去重后数据量掉多少算正常?视来源而定,聚合站点数据掉三成不稀奇,权威站点数据通常个位数百分比。
  • 增量数据和存量比对要用同一套阈值吗?不用,存量已去过重,新数据只需对齐存量标准,避免重复劳动。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]