文档解析与清洗
RAG 的效果首先取决于文档质量。脏文档进入索引后,模型会基于脏上下文回答,后面再强的 Prompt 和模型也很难补救。
# 1. 文档处理链路
原始文档
-> 格式解析
-> 文本抽取
-> 结构识别
-> 噪声清洗
-> 元数据补充
-> 质量检查
-> 后续切分
# 2. 常见文档来源
| 来源 | 难点 |
|---|---|
| Markdown | 结构清晰,但链接和代码块要处理 |
| Word | 标题、表格、批注、修订记录复杂 |
| 版面、页眉页脚、跨页表格难解析 | |
| 网页 | 导航、广告、脚本和重复内容多 |
| Excel | 表头、合并单元格和多 Sheet 复杂 |
| 图片扫描件 | 依赖 OCR,错误率可能较高 |
# 3. 清洗目标
| 目标 | 示例 |
|---|---|
| 去噪 | 删除页眉、页脚、广告、导航 |
| 去重 | 删除重复段落和多版本重复内容 |
| 保结构 | 保留标题层级、列表、表格和代码块 |
| 补元数据 | 来源、作者、时间、版本、权限 |
| 标准化 | 统一编码、空格、换行和标点 |
# 4. 元数据很重要
RAG 不只是存文本,还要存元数据。
Chunk
├─ content: 正文
├─ source: 文档来源
├─ title: 文档标题
├─ page: 页码
├─ version: 版本
├─ updated_at: 更新时间
├─ owner: 归属团队
└─ acl: 权限信息
元数据可用于权限过滤、版本控制、引用展示和排查问题。
# 5. 表格和代码处理
表格和代码是 RAG 中容易丢信息的部分。
建议:
- 表格转成 Markdown 表格或结构化 JSON。
- 保留表头和单位。
- 跨页表格要合并。
- 代码块保留语言和上下文说明。
- 对配置项、错误码、接口字段不要只做纯语义向量检索,要配合关键词检索。
# 6. 常见坑
| 问题 | 后果 |
|---|---|
| 页眉页脚未清洗 | 检索结果充满重复噪声 |
| 标题层级丢失 | Chunk 缺少语义背景 |
| 表格被打散 | 关键字段和含义对应不上 |
| 多版本混在一起 | 模型回答过期规则 |
| 权限元数据缺失 | 可能发生数据泄露 |
# 7. 质量检查
可以抽样检查:
- 文本是否完整。
- 标题层级是否保留。
- 表格是否可读。
- 来源和页码是否准确。
- 是否存在明显重复。
- 权限和版本是否正确。
# 8. Tips 快问快答
Q:文档解析可以完全自动化吗?
A:可以自动化大部分流程,但高价值文档、复杂 PDF 和表格最好抽样人工验收。
Q:为什么 PDF 做 RAG 效果常常不好?
A:PDF 更关注版面展示,不一定保留逻辑结构。解析后可能出现顺序错乱、表格断裂和页眉页脚噪声。
Q:清洗会不会误删重要内容?
A:会。所以清洗规则要可回放,重要文档要保留原文和清洗后文本用于对比。
上次更新: 2026/06/25, 17:53:09