1925 字
约 6 分钟
5
多模态内容在 RAG 中应该如何处理?

多模态内容在 RAG 中应该如何处理?

传统 RAG 处理的大多数内容都是文本:

Word / PDF / Markdown
↓
解析文本
↓
Chunk
↓
Embedding
↓
Vector DB
↓
LLM

但真实企业知识库往往不仅有文字,还有:

PDF
图片
扫描件
表格
流程图
架构图
PPT
图表

这时候就会遇到一个问题:

这些非纯文本内容,怎么放进 RAG?


一、最简单的方法:Apache Tika

我自己常用的一种方式,就是先使用:

Apache Tika

把各种文件统一解析成文本。

例如:

PDF
Word
PPT
Excel
HTML
↓
Apache Tika
↓
Text + Metadata
↓
Chunk
↓
Embedding

它最大的优点是:

简单、统一、工程成本低。

比如一个 PDF:

产品名称:XXX

产品支持 14 天退款。

经过 Tika 后直接提取成文本,就可以按照普通 RAG 流程处理。

对于:

普通 PDF
Word
网页
PPT 中的文字

这种方案通常已经够用了。


二、Tika 的问题是什么?

Tika 更擅长:

提取文本和 Metadata。

但是它并不真正“理解图片”。

例如 PDF 中有一张架构图:

User
 ↓
Gateway
 ↓
Service
 ↓
Database

如果这些关系主要存在于图片里面,Tika 很可能只能得到:

Architecture Diagram

甚至什么都提取不到。

于是:

原文信息很完整
↓
转成纯文本
↓
视觉信息丢失
↓
RAG 无法检索

所以严格来说:

Tika 解决的是“文档解析”,并没有完全解决“多模态理解”。


三、扫描 PDF:使用 OCR

如果 PDF 本质上是一张张扫描图片,就需要 OCR。

流程:

扫描 PDF
↓
OCR
↓
文字
↓
Chunk
↓
Embedding

OCR 比较适合:

扫描合同
发票
书籍
纸质文档
截图

例如图片上写着:

合同有效期:2026 年 1 月 1 日

OCR 把它转换成:

合同有效期:2026 年 1 月 1 日

然后就可以进入普通 RAG。

所以可以简单理解:

Tika
→ 提取已有文本

OCR
→ 从图片中识别文字

四、复杂 PDF:使用 Layout Parser

企业 PDF 往往不是简单的一段文字。

可能是:

标题

左栏文字        右栏图片

表格

页脚

如果直接提取文本,很容易变成:

顺序混乱
表格错位
标题和正文分离

这时候可以使用:

Layout-aware Document Parsing

也就是先识别文档结构:

标题
正文
表格
图片
页眉
页脚

然后分别处理。

最终可能得到:

Document
│
├── Title
├── Paragraph
├── Table
├── Image
└── Caption

相比直接:

PDF → 纯文本

这种方式能保留更多文档结构信息。


五、图片怎么办?让视觉模型生成描述

如果知识库中存在:

产品图片
流程图
架构图
截图
设备照片

一种非常实用的方法是:

使用视觉模型,把图片转换成文字描述。

例如图片是一张系统架构图。

视觉模型生成:

该架构图描述了一个微服务系统。

用户请求首先进入 API Gateway,
然后由 Gateway 转发给 Order Service,
Order Service 最终访问 MySQL 数据库。

然后:

Image
↓
Vision Model
↓
Image Description
↓
Embedding
↓
Vector DB

用户以后问:

请求是怎么进入 Order Service 的?

RAG 就有可能通过这段图片描述把架构图检索出来。

这种方式可以理解成:

把视觉信息翻译成文本,再进入传统 RAG。


六、更进一步:直接做图片 Embedding

还有一种真正的多模态方案:

不一定把图片全部转换成文字,而是直接:

Image
↓
Multimodal Embedding
↓
Vector

文本也是:

Text
↓
Multimodal Embedding
↓
Vector

这样用户输入:

查找系统架构图

可以直接匹配:

图片

而不只是匹配图片对应的文字描述。

最终:

Query
↓
Multimodal Retriever
↓
Text + Image
↓
Multimodal LLM
↓
Answer

这才更接近真正意义上的:

Multimodal RAG。


七、表格最好单独处理

表格也是 RAG 中非常容易出问题的一种内容。

例如:

产品 价格 退款期限
A 100 7 天
B 200 14 天

如果直接转换成:

A 100 7
B 200 14

模型可能很难理解其中的对应关系。

所以最好尽量保留结构:

产品 A
价格:100
退款期限:7 天

产品 B
价格:200
退款期限:14 天

或者直接保存:

Markdown Table
JSON
Structured Data

例如:

{
  "product": "B",
  "price": 200,
  "refund_days": 14
}

对于表格来说:

结构完整性往往比纯文本提取更重要。


八、实际项目里比较推荐“双路处理”

一个比较实用的 Multimodal RAG 架构是:

                Document
                   ↓
        ┌──────────┴──────────┐
        ↓                     ↓
     Text Parser          Image Parser
        ↓                     ↓
Tika / OCR / Layout       Vision Model
        ↓                     ↓
      Text             Image Description
        └──────────┬──────────┘
                   ↓
               Embedding
                   ↓
               Vector DB

也就是说:

文本内容:

Tika / OCR
↓
Text Embedding

图片内容:

Vision Model
↓
Description
↓
Embedding

两部分最后统一进入知识库。

这是目前工程上非常容易落地的一种方案。


九、更完整的方案:多路索引

如果系统要求更高,还可以建立:

Text Index
+
Image Index
+
Table Index

查询时:

User Query
   ↓
──────────────
↓      ↓      ↓
Text  Image  Table
Search Search Search
↓      ↓      ↓
──────────────
       ↓
    Reranker
       ↓
Text + Image + Table
       ↓
Multimodal LLM

这样就不会强行把所有信息都转换成一种格式。


十、实际项目怎么选?

如果知识库主要是:

Word
普通 PDF
网页
PPT 文字

那么:

Tika
+
普通文本 RAG

通常就够用了。

如果存在大量:

扫描 PDF

加入:

OCR

如果存在大量:

复杂 PDF
表格

加入:

Layout Parser
+
Table Parser

如果存在大量:

架构图
流程图
截图
产品图片

最好加入:

Vision Model
+
Image Description

如果视觉信息本身非常重要,则进一步使用:

Multimodal Embedding
+
Multimodal LLM

总结

多模态 RAG 的核心其实不是:

“把所有文件都转成文本。”

而是:

尽可能保留原始信息的语义。

最简单的方案:

Tika
↓
Text
↓
RAG

进一步可以升级成:

Tika
+
OCR
+
Layout Parser
+
Table Parser
+
Vision Model

再复杂一些,就是:

Text Embedding
+
Image Embedding
+
Multimodal Retriever
+
Multimodal LLM

可以简单记住:

普通文字
→ Tika

扫描内容
→ OCR

复杂版式
→ Layout Parsing

表格
→ Structured Parsing

图片 / 图表
→ Vision Model

真正多模态
→ Multimodal Embedding + Multimodal LLM

所以,Tika 是一个很好的起点,但如果知识库里真正重要的信息存在于图片、表格和图表里,仅仅使用 Tika 就不够了。

Multimodal RAG 真正要解决的问题是:

不管知识存在于文字、图片还是表格中,都能够被正确解析、检索,并最终交给模型理解。

多模态内容在 RAG 中应该如何处理?
http://clxhxhhr.top/posts/578/
作者
clxstart
发布于
2026-09-11
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。