跳到主要内容

多模态 RAG — 表格、图像与音视频

这一章讲三件事: 企业文档里的表格、图像、音视频各怎么进 RAG; 每种模态各自的经典失败(无头块、红色按钮); 以及多模态带来的四本新账:对齐(块与其视觉来源的对应关系别丢)、安全、幻觉、评测。 核心立场书里开篇就给了:多模态的主路线仍是「转成文本再走标准 RAG」 ——因为可靠性与可观测性至今是行业标准1

1. 顶层全景:两条路线

多模态(multimodal)指文本之外的信息形态:图、表、音频、视频。 书里把处理方式分成两条路线2:

conversion(转换路线):专用解析器/ASR/VLM 把非文本翻成文本结构,
然后走你已经会的那套文本 RAG —— 本章主线
native(原生路线):多模态模型直接在共享隐空间里跨模态理解
—— 只在共享嵌入一节展开(第 4 节)

图说:主走查有三个,按模态各一:一张被切坏的产品表(第 2 节)、
NLM 报告里的一张增长曲线图(第 4 节)、一通客服电话(第 5 节)。

动机很硬:看不到图表、听不到通话的系统,文本问题答得好, 图表内的问题答错或幻觉3

2. 核心原理(一):表格——结构即语义

表为什么是「语义微文档」

表是高密度、结构化的「事实之源」,周边文本往往只是叙述: Nvidia 年报第 40 页的运营结果表、制造业几千行的物料清单(BOM)、 保险里「手术码 × 免赔额 × 自付比例」的约束矩阵—— 答案全在格子与表头的关系里4

主走查 ①:朴素切块怎么把表切死

书里用一张产品表做了完整演示。表被转成 Markdown(一种用纯文本符号表示表格与格式的轻量写法)后, 拿第 03 章的递归切块器(chunk_size=100, overlap=20)切5:

原表(表头 + 六行产品):
| Product | Price(USD) | Price(EUR) | Rating |
| Model-A | $299 | €257.25 | 4.5 |
| …(Model-B/C/X/Titan 等)

切完:
CHUNK 1 = 表头行
CHUNK 2 = Model-A、Model-B 两行
CHUNK 3 = Model-C、Model-X 两行 ← 「headless」(无头块)

查询:「Model-X 多少钱?」
检索拉回 CHUNK 3:「| Model-X | $899 | 774.77 | 4.8 Stars |」
——$899 是美元还是欧元?表头在 CHUNK 1 里,联系被切断了。

无头块问题:定长切块不管表的边界,数据行与表头被切进不同的块, 数据与列名的关键联系就此丢失6

正确姿势:表当结构化上下文,别压平成文本

书里的模式分三步7:

  1. 表抽成 JSON(行列表、列名为键),保住「表头↔单元格」的关系;
  2. 让模型为整张表生成一段内容摘要,摘要作为特殊块参与嵌入与检索, 块里带一个指向全表的引用;
  3. 查询命中摘要 → 把全表(JSON 形式)作为上下文给负责生成的 LLM。 现代模型大量见过 JSON 与代码,直接读结构化数据反而高效; 巨表则按需滤列8

提取与跨页拼接

提取工具分两类:商业云 API(Amazon Textract、Azure Document Intelligence、 Google Document AI)与本地开源(IBM Docling、Unstructured、Gmft); air-gapped 或高吞吐(单位时间处理量大的)场景只能用本地9。 书里的 Docling 演示抽出了教科书里的 TD-Gammon 训练结果表, 同时也抽出了形状 (0,0) 的空表——解析器会失败,这很正常。 生产铁律:永不要假设解析 100% 准;先拿代表性样本人工核对10

跨页表会被解析器看成多个独立表:有的新页重复表头(冗余), 有的不重复(后半截成了无头数字矩阵)。stitching(拼接)层的做法: 按页排序,相邻页且列数相同、数据类型兼容就合并;检测到重复表头就删掉11。 书里的走查:联合国《World's Women 2010》里一张表跨 6 页, Docling 抽出 6 片(39/39/38/38/40/11 行),拼接程序最终合成 205 行的完整表12

3. 核心原理(二):图像——摘要还是亲眼看

两条策略的取舍

书里的二分13:

image summarization(图像摘要)multimodal retrieval(多模态检索)
时机摄入时一次性把图转成文字描述查询时把原图交给多模态模型
优点查询时便宜,可用标准文本模型保真,能答细节与复杂推理
缺点描述「锁死」:摘要漏掉的细节永远看不见了贵、慢、难扩展

这是「前期成本 vs 查询时智能」的经典交换。

主走查 ②:GenBank 增长曲线

书里用美国国家医学图书馆(NLM)的一份年度报告做了三档对照实验。 报告里 GenBank 碱基对的增长只画在图上,正文没写数字14:

查询:「GenBank Base Pairs 在 PubMed 与 PubMed Central 之间的增长?」

档位一 text-only:只索引正文
→ 答:「文中未说明」——数字在图里
档位二 text + 图像摘要
→ 答:「持续指数级增长,从 1989 年近零起步……」(有趋势,没数字)
档位三 摘要命中后,把原图按引用 ID 取回,连同问题给多模态模型
→ 答:「从约 10 亿碱基对涨到约 100 亿」——唯一有数字的答案,
数字是模型从图上读出来的

共享嵌入空间:不翻译,直接对齐

另一条路:把图和文直接映射(一一对应地放置)进同一个向量空间。 模型代表:CLIP、OpenCLIP、SigLIP、ImageBind。 训练方式是双编码器(图像一个编码器、文本一个编码器)加对比学习 (配对样本拉近、无关样本推远)——于是「a car」的文本向量与汽车图片的向量 余弦相似度高,图片无需任何人工标签15

书里的 SigLIP 演示:七张图,查询「A round Margharitta Pizza」 (故意拼错)命中披萨图,概率 0.8323;查询「Delicious italian food with cheese」 命中同一张图,但概率只有 0.0135——SigLIP 的分数是「这张图与这句话 是否匹配」的独立概率,不是相对排名16

边界也要说清:共享嵌入擅长「难以文字描述的视觉概念」(纹理、风格、 空间关系),但对信息密集图像(复杂图表、小字文档)弱—— 训练目标只要求「够用来配对文本」,不要求读出具体数值。 还有下游摩擦:混合搜索的 BM25 需要文本词元(图没有), 交叉编码重排器几乎全用文字对训练17

4. 核心原理(三):音视频——转写只是入场券

转写(ASR,自动语音识别:把语音变成文字)是音视频进 RAG 的第一步, 代表模型有 Whisper、Chirp、Deepgram18

转写是基线(起步的最低配置),但平铺的转写常常不可用:「We need to cut the budget」是 CFO 说的还是 实习生说的,权重完全不同。所以关键是说话人分离(speaker diarization—— 把转写按「谁在说话」切开),并让每段转写带上「谁在说、哪句到哪句」。

时间戳——记录每段话起止时刻的标记——支持「跳到播放器精确秒数」的深链19

书里的 Deepgram 演示:一通客服电话,转写成 utterance 结构 (说话人/文本/起止秒/置信度),按约 512 词聚块, 元数据带 start_time/end_time/speakers20

红色按钮问题

视频有「无声语义」:技师说「Now, do this」同时按下红色急停按钮—— 转写只捕捉到含混的「do this」。用户问「How do I stop the machine?」, 检索不到21。书里给三种抽帧策略22:

策略做法取舍
定间隔抽帧如每秒 1 帧(1 FPS),逐帧生成描述或嵌入粒度细、时间戳准;但帧间独立,读不懂「随时间展开的动作」
时间段抽取重叠片段(20 秒一段、10 秒步长)给时间感知的多模态模型写因果摘要语义富,贵
关键帧抽取场景切换检测,只对关键帧处理(「技师的手按下红色急停阀」),描述并入口播转写省钱省延迟

实践是混合:轻量帧抽取做广覆盖,贵的时间段分析只留给高价值视频23

5. 核心原理(四):四本新账

对齐账。 块不再是字符串(一串字符的纯文本),而是「向量 + 原始内容 + 空间/时间元数据」的 复合对象。丢了坐标,模型无法指源;丢了时间戳,没法跳播—— 这种与视觉源失去链接的块叫「orphan chunk」(孤儿块),引用等于没有24

界面账:视觉引用。 答「为什么营收预期下调?」时如果依据是第 40 页的 柱状图,UI 要直接渲染那张图,不是给个脚注——所以检索 API 要返回 图表的精确坐标(前端裁剪显示或在 PDF 上高亮)25

安全账:视觉提示注入。 图像里可以藏人眼不可见但模型可读的指令 (「Ignore previous instructions…」)——第 08 章的注入防御在多模态下要长出 像素级的新层;扫描表单、护照照片里的人脸与签名,要模型化检测后脱敏 (「blur-on-ingest」,入库即打码)26

幻觉账:visual sycophancy(视觉谄媚)。 问「这根管子的锈在哪?」, 多模态模型会被问题里的「rust/crack/damage」带偏,把影子或污渍说成 「severe corrosion」。机制:问题里的词是强注意力锚,模型扫图时降低了 匹配这些概念的阈值。防御叫 blind verification(盲验证): 先用中性指令(「详细描述表面状况」)让模型生成一份描述当基准, 再让另一个纯文本模型对照用户问题与中性描述,矛盾就打上标记(记号)或拒答27

评测账

文本指标在多模态不顶用。检索评测用 recall@k + golden 图文对 (可用高质量模型给图像库生成描述当合成基准);生成评测用 VLM-as-a-judge(裁判模型同时看响应、参考答案与检索到的图像打 1-5 分) ——书里称这是「目前无人工评审下回归测试视觉推理的唯一可扩展方式」。 最佳实践:维护 hard negative 测试集(视觉相似但数据矛盾的图, 比如两张颜色相近的不同柱状图),专罚「看了没读」28

6. 作者的判断与证据

  • 「conversion 为主线」是作者基于可靠性与可观测性的工程判断,不是性能结论;
  • 三档对照实验(GenBank)是真实可复现的演示,「唯一有数字的答案」是实测输出;
  • 「克制是最成功的策略」出现在章末结论:先用第 11 章的评测确认检索失败 确实由非文本数据引起,再加多模态组件——别默认全库上重型 OCR/ASR29

7. 边界与局限

  • 音视频一节以转写为主,真正的视频理解(直接吃 video tokens 的模型) 书里承认是「下一代」的事;
  • 多模态成本的量化(每页 OCR + 视觉编码 + 摘要的单价)只有定性对比 (比文本重几个数量级)30;
  • 共享嵌入路线在书中只有演示规模;混合检索与重排的配套改造是开放问题;
  • 「视觉谄媚」的防御是研究级做法,工程成熟度低。

8. 可带走的

  1. 表 = 结构即语义:别压平成文本;摘要指向全表,命中后给全表 JSON;
  2. 无头块是表格的第一杀手:切块要尊重表的边界;跨页表先拼接再切块;
  3. 图像两路分工:摘要管「图内推理」(数据/文字),共享嵌入管「视觉概念检索」(纹理/风格);
  4. 转写必须带说话人与时间戳——否则引用与权重都无从谈起;
  5. 红色按钮问题:视频语义不在语音里;三种抽帧按价值混合用;
  6. 块从字符串变复合对象:向量 + 原文 + 空间/时间元数据;孤儿块 = 引用作废;
  7. 视觉注入与视觉谄媚是两个新攻击面/失败模式,盲验证是后者的标准防御;
  8. 先评测再加模态:确认检索失败确实由非文本数据引起,再上多模态组件。

9. 原文地图

主题原书章原文位置
两条路线Chapter 8text/104-ch08-chapter-8-multimodal-rag.txt:19(搜「conversion」)
表=语义微文档Why Are Embedded Tables Important?text/105-fm-why-are-embedded-tables-important.txt:7(搜「10-K」)
提取三步与工具Extracting Tables from Documentstext/106-fm-extracting-tables-from-documents.txt:10(搜「gridlines」) · :30(搜「Textract」) · :36(搜「Docling」)
解析器会失败Extracting Tables from Documentstext/106-fm-extracting-tables-from-documents.txt:156(搜「never assume」)
无头块走查Why Naive Chunking Fails for Tablestext/107-fm-why-naive-chunking-fails-for-tables.txt:107(搜「headless」)
表→JSON→摘要模式Processing Tables for RAGtext/108-fm-processing-tables-for-rag.txt:4(搜「JSON」) · :45(搜「structured context」)
跨页拼接、205 行Dealing with Multi-Page Tablestext/109-fm-dealing-with-multi-page-tables.txt:10(搜「stitch」) · :13(搜「World's Women」) · :120(搜「205 rows」)
图像两策略Documents with Embedded Images(在 109 文件内)text/109-fm-dealing-with-multi-page-tables.txt:171(搜「image summarization」)
GenBank 三档对照The Image Summarization Approachtext/110-fm-the-image-summarization-approach.txt:200(搜「GenBank」) · :313(搜「10 billion」)
共享嵌入、SigLIP 实测Multimodal Retrieval with a Shared Embedding Spacetext/111-fm-multimodal-retrieval-with-a-shared-embedding-spa.txt:4(搜「SigLIP」) · :177(搜「0.8323」) · :189(搜「0.0135」)
说话人分离、DeepgramThe Baseline: High-Fidelity Transcriptiontext/112-fm-the-baseline-high-fidelity-transcription.txt:7(搜「diarization」) · :4(搜「Deepgram」)
红色按钮与抽帧三策略Visual Semantics: The "Red Button" Problemtext/113-fm-visual-semantics-the-red-button-problem.txt:4(搜「red emergency」) · :14(搜「1 FPS」)
孤儿块Modality Alignmenttext/115-fm-modality-alignment.txt:12(搜「orphan」)
视觉引用The Interface Layer: Visual Citationstext/116-fm-the-interface-layer-visual-citations.txt:7(搜「crop」)
视觉注入Security, Privacy, and Governancetext/117-fm-security-privacy-and-governance.txt:4(搜「visual prompt injection」)
视觉谄媚与盲验证Detecting Multimodal Hallucinationstext/119-fm-detecting-multimodal-hallucinations.txt:4(搜「sycophancy」) · :13(搜「blind verification」)
hard negative 评测Evaluating Multimodal Retrieval and Generationtext/120-fm-evaluating-multimodal-retrieval-and-generation.txt:37(搜「hard negative」)

Footnotes

  1. 出处:「Chapter 8. Multimodal RAG」第 19-27 段(text/104-ch08-chapter-8-multimodal-rag.txt:19,搜「conversion」)。

  2. 出处:「Chapter 8」第 19 段(text/104-ch08-chapter-8-multimodal-rag.txt:19,搜「conversion」)。

  3. 出处:「Chapter 8」第 9 段(text/104-ch08-chapter-8-multimodal-rag.txt:9,搜「P&L」)。

  4. 出处:「Why Are Embedded Tables Important?」第 4-20 段(text/105-fm-why-are-embedded-tables-important.txt:7,搜「10-K」)。

  5. 出处:「Why Naive Chunking Fails for Tables」第 4-73 段(text/107-fm-why-naive-chunking-fails-for-tables.txt:107,搜「headless」)。

  6. 出处:「Why Naive Chunking Fails for Tables」第 110 段(text/107-fm-why-naive-chunking-fails-for-tables.txt:110,搜「Model-X」)。

  7. 出处:「Processing Tables for RAG」第 4-45 段(text/108-fm-processing-tables-for-rag.txt:4,搜「JSON」;:45,搜「structured context」)。

  8. 出处:「Processing Tables for RAG」第 102-108 段(text/108-fm-processing-tables-for-rag.txt:102,搜「JSON」)。

  9. 出处:「Extracting Tables from Documents」第 30-36 段(text/106-fm-extracting-tables-from-documents.txt:30,搜「Textract」;:36,搜「Docling」)。

  10. 出处:「Extracting Tables from Documents」第 144-156 段(text/106-fm-extracting-tables-from-documents.txt:156,搜「never assume」)。

  11. 出处:「Dealing with Multi-Page Tables」第 4-10 段(text/109-fm-dealing-with-multi-page-tables.txt:10,搜「stitch」)。

  12. 出处:「Dealing with Multi-Page Tables」第 13-120 段(text/109-fm-dealing-with-multi-page-tables.txt:13,搜「World's Women」;:120,搜「205 rows」)。

  13. 出处:「Documents with Embedded Images」(在「Dealing with Multi-Page Tables」文件内)第 171-186 段(text/109-fm-dealing-with-multi-page-tables.txt:171,搜「image summarization」)。

  14. 出处:「The Image Summarization Approach」第 48-226 段(text/110-fm-the-image-summarization-approach.txt:200,搜「GenBank」;:313,搜「10 billion」)。

  15. 出处:「Multimodal Retrieval with a Shared Embedding Space」第 4-46 段(text/111-fm-multimodal-retrieval-with-a-shared-embedding-spa.txt:4,搜「SigLIP」)。

  16. 出处:「Multimodal Retrieval with a Shared Embedding Space」第 49-190 段(text/111-fm-multimodal-retrieval-with-a-shared-embedding-spa.txt:177,搜「0.8323」;:189,搜「0.0135」)。

  17. 出处:「Multimodal Retrieval with a Shared Embedding Space」第 194-206 段(text/111-fm-multimodal-retrieval-with-a-shared-embedding-spa.txt:200,搜「dense」)。

  18. 出处:「The Baseline: High-Fidelity Transcription」第 4 段(text/112-fm-the-baseline-high-fidelity-transcription.txt:4,搜「Deepgram」)。ASR=automatic speech recognition。

  19. 出处:「The Baseline: High-Fidelity Transcription」第 7-10 段(text/112-fm-the-baseline-high-fidelity-transcription.txt:7,搜「diarization」)。

  20. 出处:「The Baseline: High-Fidelity Transcription」第 29-115 段(text/112-fm-the-baseline-high-fidelity-transcription.txt:7,搜「utterance」)。

  21. 出处:「Visual Semantics: The "Red Button" Problem」第 4 段(text/113-fm-visual-semantics-the-red-button-problem.txt:4,搜「red emergency」)。

  22. 出处:「Visual Semantics」第 7-26 段(text/113-fm-visual-semantics-the-red-button-problem.txt:14,搜「1 FPS」)。

  23. 出处:「Visual Semantics」第 84-131 段(text/113-fm-visual-semantics-the-red-button-problem.txt:87,搜「hybrid」)。

  24. 出处:「Modality Alignment」第 7-17 段(text/115-fm-modality-alignment.txt:12,搜「orphan」)。

  25. 出处:「The Interface Layer: Visual Citations」第 4-10 段(text/116-fm-the-interface-layer-visual-citations.txt:7,搜「crop」)。

  26. 出处:「Security, Privacy, and Governance」第 9-16 段(text/117-fm-security-privacy-and-governance.txt:4,搜「visual prompt injection」)。

  27. 出处:「Detecting Multimodal Hallucinations」第 4-16 段(text/119-fm-detecting-multimodal-hallucinations.txt:4,搜「sycophancy」;:13,搜「blind verification」)。

  28. 出处:「Evaluating Multimodal Retrieval and Generation」第 11-37 段(text/120-fm-evaluating-multimodal-retrieval-and-generation.txt:37,搜「hard negative」)。

  29. 出处:「Chapter 8」结论段,在「Evaluating Multimodal Retrieval and Generation」文件内第 57-77 段(text/120-fm-evaluating-multimodal-retrieval-and-generation.txt:74,搜「restraint」)。

  30. 出处:「Computational Economics and Latency」第 4-10 段(text/114-fm-computational-economics-and-latency.txt:4,搜「orders of magnitude」)。