
做 RAG(检索增强生成)知识库,很多人第一步就踩坑了——直接把 PDF 拖进去提取文本,然后切块、向量化、检索。结果大模型回答总是不对,原因不在向量检索,也不在大模型,而在最前面的文档解析环节。这篇拆一下 RAG 里文档解析到底要做什么,为什么传统 OCR 不够用。
一、RAG 的完整链路
先把 RAG 流程摆出来,看文档解析在哪一环:
原始文档(PDF/Word/扫描件)
│
▼
文档解析与结构化处理 ← 这一环最容易被忽略
│
▼
文档切块(Chunking)
│
▼
向量化(Embedding)
│
▼
存入向量数据库
│
▼
用户提问 → 向量召回 → Prompt 拼接 → LLM 生成答案
后面几步(向量化、召回、Prompt)大家都很重视,但第一步文档解析如果做不好,喂给大模型的就是一堆残缺、错位、格式混乱的文本,后面再怎么调参也救不回来。
二、传统文档解析的三个问题
问题1:OCR 只能提取文字,丢失版面结构。
扫描版 PDF 用传统 OCR 识别出来的是一整页纯文本,标题和正文混在一起,表格被拆成一行行零散文字,图片旁边的注释和正文混为一谈。RAG 切块的时候不知道哪里是标题、哪里是正文、哪里是表格,切出来的 Chunk 语义不完整。
问题2:电子解析和 OCR 各有短板。
- 电子版 PDF/Word:文字能直接复制,但表格结构、图文混排、页眉页脚这些版面信息丢了
- 扫描件 OCR:能识别文字,但准确率受图片质量影响,而且完全丢失结构
实际文档往往是混合的——既有电子版内容,又有扫描插入的图片、盖章、手写批注。单一方式解析效果都不好。
问题3:切块丢失语义边界。
传统按固定长度切块(比如每 500 字切一块),很容易把一个完整的段落从中间切断,或者把标题和它下面的正文分到两个 Chunk 里。这样检索出来的 Chunk 上下文不完整,大模型看到的就是半句话。
三、文档智能是怎么解决的
文档智能(Document Mind)这类方案的核心改进是:不只是提取文字,而是理解文档的版面结构。
1. 电子解析 + OCR/NLP 混合处理
针对不同类型的内容自动选择解析方式:
- 电子版文字层 → 直接提取,准确率高
- 扫描图片区域 → OCR 识别
- 表格区域 → 表格结构识别,输出行列关系
- 图片区域 → 标注位置和类型
混合处理的好处是各取所长:电子版文字准确,OCR 补全扫描件,表格单独处理不被拆碎。
2. 输出结构化 Markdown/JSON
解析结果不是一堆纯文本,而是带层级的结构化数据:
{
"type": "title",
"text": "第一章 系统架构",
"level": 1,
"page": 3,
"children": [...]
}
包含:
- 层级树结构(一级标题、二级标题、段落、列表)
- 表格的行列结构
- 图片位置和说明
- 页码、批注等元信息
这样下游 RAG 就能按文档的自然语义切块——在标题处切、在段落边界切,而不是机械地按字数切。
3. 版面理解模型(GeoLayoutLM)
这是底层技术模型,专门学习文档的版面布局:哪些是标题、哪些是正文、哪些是表格、哪些是图注。它不是简单 OCR,而是"看懂"页面的排版结构。
四、对 RAG 效果的实际影响
文档解析质量直接决定了 RAG 的上限:
| 解析质量差 | 解析质量好 |
|---|---|
| 表格被拆碎,检索出来是零散数字 | 表格作为整体 Chunk,完整召回 |
| 标题和正文分到不同 Chunk | 标题+正文作为一个 Chunk,上下文完整 |
| 页眉页脚混进正文,污染检索结果 | 过滤掉非正文内容,只保留有效信息 |
| 扫描件识别错字,向量召回不准 | OCR+NLP 混合修正,文本准确率高 |
简单说:文档解析做得好,RAG 回答准确率能提升一个档次;做得差,后面再怎么优化向量数据库和 Prompt 都是事倍功半。
五、实操建议
如果你在做 RAG 项目,文档解析环节建议这样做:
- 先看你的文档类型:纯电子版 PDF 可以直接用文本提取;扫描件、图文混排的文档必须用文档智能/OCR 方案
- 不要按固定字数切块:按文档结构切——标题、段落、表格作为一个整体 Chunk
- 保留元信息:每个 Chunk 带上它属于哪个章节、哪一页,召回时可以做过滤
- 过滤噪音:页眉、页脚、水印、页码这些非正文内容要在解析阶段就去掉
- 先验证解析效果再搭后面:拿 10 个典型文档跑一遍解析,检查输出的 Markdown 结构对不对,再做向量化和检索
六、写在最后
RAG 不是"把文档塞进向量数据库"就完事了。文档解析是整个链路的地基,地基歪了,后面盖什么都歪。理解了文档版面结构的重要性,你就知道为什么有些 RAG 项目效果差——问题往往不在大模型,而在第一步的数据处理。
完整的文档智能 + RAG 技术方案可以看官方方案页——查看文档智能与 RAG 构建 LLM 知识库方案。具体能力以页面实际展示为准。
你做 RAG 时文档解析用的什么方案?踩过什么坑?评论区交流。