Skip to content

数据清洗与去重

工程落地第一站:数据准备。清洗、去重(精确/近似/语义)、质量过滤与面试追问。

Updated View as Markdown
For humans

数据清洗与去重

垃圾进,垃圾出。RAG 的检索质量上限由索引内容决定,脏数据入库后,错误会被反复检索到并注入答案。清洗和去重是索引之前的事,不是事后补救。

清洗

问题 处理
页眉页脚、导航噪音 规则或模型识别后剥离
PDF 解析乱码、重排错序 修复或丢弃低置信块
扫描件 OCR,低质量页面识别后人工抽检
公式、代码、特殊符号 保留结构,避免切碎
PII 和敏感信息 脱敏后再入库,涉及合规

清洗的验收标准:解析后的文本能被人类无障碍阅读。读不通的段落,模型也读不通,检索效果必然差。

去重

重复文档在 RAG 里是双重伤害:检索时多个重复块挤占 Top-K 名额,把真正相关的内容挤出去;生成时重复内容浪费上下文。

方法 原理 适用
精确去重 内容 hash 比对 完全相同的文档,最简单
近似去重 MinHash / SimHash,局部敏感哈希 小改动版本、转载内容
语义去重 Embedding 相似度阈值 表述不同但意思相同的段落

工程顺序:先精确去重(便宜),再 MinHash(覆盖轻微改动),高价值语料再做语义去重(贵,但能抓到换说法的重复)。去重要保留一条记录,通常保留元数据最全或时间最新的那条。

质量过滤

  • 长度过滤:过短的块(几句话)检索价值低,过长的块切分时已经处理
  • 语言过滤:混合语料里筛掉和目标语言无关的内容
  • 时效过滤:过期政策、废弃文档打标或移除
  • 质量评分:用规则或模型给块打分,低于阈值的进不了索引

面试追问

  1. 为什么要去重? 重复块挤占 Top-K 名额、浪费上下文,还让同义内容在重排阶段互相干扰
  2. 三种去重怎么选? 精确用 hash,轻微改动用 MinHash/SimHash 近似去重,换说法的重复用 Embedding 语义去重。按成本从低到高逐层做
  3. 清洗的验收标准? 解析后的文本人类能无障碍阅读。读不通的段落模型也读不通
  4. 敏感数据怎么处理? 入库前脱敏,涉及合规的数据不进索引或做权限隔离
  5. 脏数据入库了会怎样? 错误被反复检索并注入答案,且难定位。清洗要在索引之前做,不是事后补救
Navigation

Type to search…

↑↓ navigate↵ selectEsc close