多模态 RAG 是什么
知识库里大量信息并不在正文里:截图、流程图、表格、扫描件。处理方式主要有三条路径:用多模态向量模型把图文映射到同一空间做图搜图;让视觉模型为图片生成结构化描述,描述进入文本索引、原图按引用保留;表格则转成结构化文本或按行列切片。常见的落地顺序是先做图片描述加文本检索,链路短、可解释、排错容易,遇到描述丢关键信息的情况再考虑双塔向量方案。
基本信息
| 图片入库 | 原图与生成的文字描述一起存,描述进文本向量,原图保留引用与页码 |
|---|---|
| 图搜图 | 多模态双塔模型把图文映射到同一向量空间,支持以图搜图 |
| 图表问答 | 让多模态模型直接看图作答,或先抽取数据点再转成文本参与推理 |
| 展示环节 | 回答引用图片时返回缩略图、页码与原文位置 |
| 成本构成 | 入库时一次性描述生成成本,加上每次检索与看图推理的成本 |
| 常见失效 | 描述粒度不足、图片更新后描述未重生成,检索到的是旧内容 |
典型使用场景
- 产品手册与说明书:大量接线图与结构图,文字描述必须配合原图才能看懂
- 财务报表与图表问答:需要从图表中读取趋势与数值
- 扫描件与图纸管理:只有图像没有文字层,必须先做识别再入索引
- 培训课件:一页同时包含要点文字与示意图,切分时两者不能分离
- 电商与图文资料:商品参数表与场景图需要同时可检索
图片描述入库流程
图片描述入库流程
for img in extract_images(pdf):
caption = vision_model.describe(img) # 生成结构化描述:类型、主体、关键数值
caption = f"[图片,来自 {pdf.name} 第 {img.page} 页] {caption}"
upsert(text=caption, # 描述进文本索引,参与常规检索
meta={"image_path": img.path, "page": img.page}) # 原图留引用
# 检索命中后返回描述与原图引用,模型可结合两者作答
# 检查点:抽十条图片查询,确认命中结果里能取回正确的页码与原图方案对比
| 方案 | 适用情况 | 取舍 |
|---|---|---|
| 图片描述加文本检索 | 多数文档场景 | 链路短、可解释,依赖描述质量 |
| 多模态双塔向量 | 以图搜图、描述难以覆盖的图 | 效果更好,链路与成本更高 |
| 图表转结构化文本 | 数据类图表问答 | 精度高,需要识别与对齐成本 |
| 多模态模型直接看图 | 少量关键图片 | 灵活,但每次调用成本较高 |
先做图片描述方案再考虑双塔向量:描述方案可解释、可人工校对,出问题能看到具体是哪段描述不对,而向量方案出错时几乎无法定位原因。
描述与正文的重复度要控制:如果描述只是把正文复述一遍,图片块会与文本块争夺同一批召回名额,实际信息量没有增加,反而挤掉其他内容。