RAGFlow 实战(二):文档解析实战——按文档类型选切块策略
RAGFlow 实战(二):文档解析实战——按文档类型选切块策略
一、一个反直觉的结论:解析质量的上限在「切块」,不在「识别」
刚开始用 RAGFlow,我默认「扫描件才需要担心解析,文本文件还不是随便切」。直到拿一份 CSV 产品参数表做问答,检索结果一塌糊涂,才反应过来:
CSV 是纯文本,根本不需要 OCR——OCR 是给像素的。CSV 的病在切块方式,不在识别。
同一份 CSV,两种切块方法的实测对比:
| 切块方法 | 结果 |
|---|---|
| General(naive) | 切出 ~2000 个「合并块」,一行数据被切得七零八落 |
| Table | 切出 ~10000 个「行级块」,每行一个块,字段齐全 |
行级块长这样,检索和阅读都友好:
1 | - Product ID: M20978 |
RAGFlow 的 Table 切块会按列类型生成可过滤字段,等于给每行数据建了结构化索引。表格类文档(CSV/Excel/数据库导出)无脑选 table,这是这篇最核心的一条经验。
二、按文档类型选策略:一张决策表
小半年用下来,我把常见文档类型和切块方法的对应关系整理成这张表:
| 文档类型 | 推荐切块方法 | 关键配置 / 注意 |
|---|---|---|
| CSV / Excel 数据表 | table | 行级块 + 列类型字段;验收看块数 ≈ 行数 |
| 合同、条款类 | laws 或 naive + 结构保护 | 「第X条」不可分割,靠结构保护兜底 |
| 技术文档(多级标题) | naive 或 paper | language 必须设 Chinese |
| 扫描件 / 图片 PDF | naive(走 OCR) | OCR 在这类文档才有意义 |
| 论文 | paper | 按论文结构(摘要/章节)切 |
| 演示文稿 | presentation | 按页切,每页一图一文 |
| 邮件归档 | 按邮件线程切 | |
| 知识图谱 | knowledge_graph | 实体关系抽取 |
三、中文语料:不设 language,等于按英文断句切中文
这是第二个吃过大亏的坑。中文技术文档建库后,检索怎么调都不准,查了一圈才发现:**建库时没把 language 设成 Chinese**。
RAGFlow 的默认语言是 English,会按英文的句读习惯给中文断句,块边界一塌糊涂——意思完整的句子被切两半,检索自然残血。
1 | # 建库时显式指定 |
中文语料建库第一件事:设 language = Chinese。这条没有报错,只会 quietly 让你的检索效果打八折。
四、结构化单元保护:表格、列表、条款的 A/B 测试法
RAGFlow 有个「结构化单元保护(后置修正)」开关——初次切片按 token 数机械切,切完再来一轮「结构修复」,把被切断的表格/列表/条款合并回完整单元。
怎么验证它有没有用?我专门造了一篇「专治各种切断」的测试文档,覆盖四类最易被切坏的结构:
- 大表格:40 行 × 6 列,行数多到必然被从中间切断;
- 长列表:25 项验收检查项;
- 合同条款:「第X条」开头的条款块;
- 多级标题:三级标题下挂小表格 + 结尾说明。
测试方法就一招——开关对比法:
1 | 关闭保护 → 上传解析 → 记录切片情况 |
| 结构单元 | 关闭时的典型问题 | 开启后的预期 |
|---|---|---|
| 大表格 | 从中间某行切成两半 | 表格完整成块 |
| 长列表 | 列表项跨块断裂 | 列表连续 |
| 合同条款 | 「第X条」只剩前半段 | 条款完整 |
| 多级标题 | 标题孤悬在块末尾 | 标题 + 内容同块 |
判断标准很朴素:检索这个表格时,能不能一次拿回整张表。拿不回来,就是切坏了。
五、一个必须养成的习惯:改切块方法,要删文档重传
改完切块方法,必须删除文档重新上传再解析,否则你看到的还是旧切片——页面不报错,只是不更新。验收标志:
- 块数 ≈ 数据行数(table 方法);
- 切片内容是竖排
- 字段: 值; - 表格/条款完整成块。
我一开始在 Web 里改完设置就直接重新解析,盯着旧切片看了半小时,以为功能坏了。
六、入库前先清洗:AI 的「思考过程」会污染检索
最后一条血泪教训:素材里混进 AI 的「思考过程」文本,会长期占据检索 Top-1。
比如这种段落:
1 | 好的,用户正在创作一部古装短剧,需要设计一个开篇钩子。让我分析一下目标受众…… |
它语义宽泛、和什么都像,一旦入库,各种查询都能命中它,把真正有用的内容挤下去。入库前把 AI 思考过程、寒暄、元描述类文本洗掉——这条对「用 AI 辅助生产再入库」的流水线尤其重要。
七、小结
文档解析的经验可以浓缩成五条:表格用 table、中文设 Chinese、结构化文档开保护、改方法要重传、入库前清洗。全部是「不报错但效果打折」的坑,也全部可以用 A/B 测试验证。下一篇讲检索侧——切好了只是上半场,检得准才是胜负手。

