多模态 RAG:PDF、表格、图片和图表怎么进知识库
多模态 RAG 不是把图片丢给视觉模型,而是重构解析、分块、索引、引用、权限和评测链路。
很多企业知识不是纯文本。PDF 里有版面结构,财务报表里有行列关系,产品文档里有流程图,工单里有截图。如果只做 OCR 再塞进向量库,多模态信息会被压扁成一段不可靠的文本。
多模态 RAG 的核心问题不是“支持图片上传”,而是如何把不同形态的信息变成可检索、可引用、可验证的知识单元。
判断标准
如果答案必须依赖图表、截图、表格结构、公式或版面位置,普通文本 RAG 就不够了。此时要把解析、索引、引用和评测一起升级。
总体架构
四类内容的处理方式
| 类型 | 不推荐 | 推荐 |
|---|---|---|
| 整页 OCR 后直接切块 | 保留页码、标题层级、段落、表格和图片坐标。 | |
| 表格 | 转成一长段文本 | 同时保存表头、行列、单位、聚合口径和原始单元格。 |
| 图片 | 只生成一句 caption | 保存图片、caption、OCR 文本、上下文段落和页面坐标。 |
| 图表 | 只描述“柱状图显示增长” | 抽取指标、维度、时间、数值和图例,保留原图引用。 |
解析层:不要过早丢结构
解析阶段决定了系统上限。一个 PDF 页面至少要拆出这些信息:
Document
Page
Block: title / paragraph / table / image / chart / footer
BoundingBox: x, y, width, height
Text: OCR or native text
Relations: caption, nearby paragraph, table header
Permissions: tenant, user group, document ACL如果只保留 text 字段,后面就很难回答“图 3 说明了什么”“第 4 页表格里哪个指标下降最多”“这个截图来自哪个功能模块”。
分块策略
多模态文档不能只按 token 切。更稳的方式是以对象为中心分块。
PDF 优先按标题层级、页面和版面块切分。每个 chunk 保存页码、坐标、上级标题和相邻对象。跨页表格要合并,不要按页硬切。
表格可以生成两类 chunk:结构 chunk 保存 schema、表头、单位;行级 chunk 保存关键记录。大表不要整表向量化,否则召回结果会非常粗。
图片和截图至少需要 caption、OCR 文本、附近段落和原始图片 URL。只有 caption 不够,因为很多关键信息在截图里的按钮、报错和数值中。
图表要同时保留图像、标题、轴、图例、数据点和解释文本。能抽取数据就抽取数据;不能抽取时至少保存视觉描述和原图证据。
索引设计
多模态 RAG 通常需要三类索引一起工作:
| 索引 | 作用 | 适合召回 |
|---|---|---|
| 全文索引 | 精确匹配关键词、编号、术语、报错信息。 | 表格字段、截图 OCR、文档标题。 |
| 向量索引 | 召回语义相近内容。 | 段落、caption、图表解释、FAQ。 |
| 对象存储 | 保存原始图片、页面截图、PDF 坐标。 | 引用、证据回放、人工复核。 |
在线检索时,不要只返回文本。更合理的结果结构是:
{
"type": "chart",
"text": "2025 Q4 API latency p95 increased from 420ms to 680ms.",
"source": "ops-report.pdf",
"page": 12,
"bbox": [128, 220, 940, 610],
"image_url": "object://pages/ops-report/12/chart-2.png",
"permissions": ["team:platform"]
}上下文组装
多模态上下文有两个常见错误:
一个可控的组装策略是:
评测指标
多模态 RAG 评测不能只看答案对不对,还要看证据是否对。
| 层级 | 指标 | 说明 |
|---|---|---|
| 解析 | Object Recall | 页面中的表格、图片、图表是否被抽出来。 |
| 检索 | Evidence Recall@K | 正确证据对象是否进入候选集。 |
| 定位 | Region Accuracy | 引用的页码、坐标、表格行列是否正确。 |
| 生成 | Faithfulness | 答案是否忠实于文本和视觉证据。 |
| 成本 | Image Tokens / Latency | 图片上下文带来的 token 和延迟开销。 |
安全与权限
多模态内容的权限问题更容易被忽略。截图里可能有客户名称,表格里可能有价格、手机号、内部指标,PDF 页脚可能带有保密标识。
生产系统至少要做三件事:
- 权限绑定到对象级别,而不是只绑定到文档级别。
- OCR 文本、caption、结构化表格和原始图片使用同一套 ACL。
- 日志中避免落原图、完整 OCR 文本和敏感表格内容。
什么时候值得做多模态 RAG
| 场景 | 是否值得 |
|---|---|
| 纯 FAQ、政策条款、API 文档 | 通常先做文本 RAG。 |
| 财报、合同扫描件、审计材料 | 值得,表格和版面信息很关键。 |
| 产品手册、故障截图、客服工单 | 值得,截图和步骤说明经常一起出现。 |
| 数据看板、运营周报、实验报告 | 值得,图表和指标解释是主要知识。 |
实用结论
多模态 RAG 的难点不在模型,而在数据结构。只要解析阶段保留对象、坐标、关系和权限,后面可以逐步升级检索、重排和视觉模型;如果一开始把所有内容压成普通文本,系统很快会遇到无法定位、无法引用、无法评测的问题。
讨论
继续讨论这篇笔记
有问题、补充案例或不同观点,可以通过 GitHub Discussions 继续交流。