在RAG(检索增强生成)技术中,文档预处理是决定系统整体性能的基石。一段混乱的文档,无论后续模型多强大,检索结果都会大打折扣。今天,我们就来系统拆解文档预处理的四个核心步骤:去重、去噪、格式化和关键信息提取。
一、去重:剔除冗余内容
文档中的重复内容非常普遍,原因包括:
- 人工编写时,复制粘贴操作可能误操作多次;
- 同一文档内,相似段落、句子、页面重复出现;
- 跨文档场景(如公司内部文档版本迭代),从1.0到1.3版本会产生大量内容重叠的页面。
去重的对象:
- 重复的段落、句子、页面、文档
- 跨文档重复(例如多个版本中相似的描述)
为什么要去重?因为重复内容会干扰检索算法,降低召回准确率,同时浪费存储和计算资源。
常见去重方法:
- 基于文本哈希的精确去重(如SimHash、MinHash)
- 基于语义相似度的去重(如使用embedding+余弦相似度)
二、去噪:清除干扰数据
文档中常含有对检索无益甚至有害的“噪声”,例如:
- 页码、页眉页脚
- 水印、Logo、广告备注
- 从网上购买的笔记资料中,插入的营销信息或网站签名
去噪的目标:删除所有非内容主体、无意义的脏数据,只保留真正有用的文本。
注意:水印和页码有时可能包含关键信息(如版本号),去噪时需要结合业务场景判断,避免误删。建议先识别再选择性移除。
三、格式化:统一数据规范
不同来源的文档,格式千差万别。格式化就是要将这些数据“拉齐”,便于后续处理。
常见格式化任务:
- 编码格式统一:统一为UTF-8,避免乱码
- 换行符号统一:Windows(CRLF)、macOS(CR)、Linux(LF)统一为一种
- 标点符号统一:全角/半角、中文/英文标点转换
- 排版对齐:空格、缩进、特殊符号的清理
格式化是看似简单但极易被忽略的步骤,不规范的数据会直接导致后续模型解析失败。
四、关键信息提取:让长文本“瘦身”
不是所有原文都需要原封不动保留。关键信息提取就是从长文本中抽取核心要素,替代冗余原文,从而提升检索精度和速度。
提取的内容包括:
- 主要实体:时间、地点、人物、组织等
- 事件结论:核心论点、判断、结果
- 摘要:长文档的提纲或概要
- 关键数字、图表标题等
示例:原本一份10页的PDF报告,提取后只保留“2023年Q3营收增长15%,主要受亚太区需求拉动”这样的核心信息,检索时就能更精准命中。
注意:关键信息提取需要在保留语义完整性的前提下进行,不可过度压缩导致信息丢失。
总结
文档预处理是RAG技术链条中的“第一公里”,它看似简单,却直接决定了后续检索和生成的质量。去重、去噪、格式化、关键信息提取四步缺一不可。当你发现RAG系统检索结果不理想时,不妨先从文档预处理环节排查问题。
思考题
问题1:以下哪种情况属于“跨文档重复”?
A. 同一篇文档中出现两句一模一样的话
B. 不同作者写的两篇文章有一模一样的结尾段
C. 一篇文档中的某个页面被意外复制成了两页
D. 同一团队迭代的v1.0和v1.2文档中有大量相似的描述
答案:D(其余选项属于文档内重复或不同文档偶然重复场景,但跨文档重复特指同一来源的不同版本之间的内容重叠)
问题2:关键信息提取时,以下哪种做法可能导致检索质量下降?
A. 只保留时间、地点、人物等实体
B. 对长文档生成一段摘要
C. 保留原文中的每一句话,包括广告水印
D. 提取核心结论和关键数字
答案:C(保留广告水印属于未去噪,且冗余信息会干扰检索。合理的关键信息提取应该去除无关内容,保留核心语义)