文档中包含表格、图片和代码块,RAG 应该如何处理?

文档中包含表格、图片和代码块,RAG应该如何处理?
这个问题考察的是你在真实业务场景中处理复杂文档的能力。RAG虽然擅长处理纯文本,但一旦文档里塞进表格、图片、代码块,传统的向量化方法就抓瞎了。面试官想看你有没有系统性的解决方案,而不是只会说"用Embedding转成向量"。
核心就三件事:表格要拆开查、图片要转换理解、代码块要执行。下面逐一讲解。
板块1:表格处理 - 别让LLM"大海捞针"
先说一个血泪教训:直接把整张表格塞给LLM,基本等于自杀。
一张100行×10列的表格,向量化后token数量直接爆表。更要命的是,LLM会产生"位置偏差"——问"第二列的平均值",它可能给你算出第三列的结果。
正确姿势是TableRAG框架,它的思路很聪明:分离模式检索和单元格检索。
什么叫模式检索?就是先找到"价格"这个列名。什么叫单元格检索?就是定位到"钱包"这个值。两步走,只提取相关行列信息。
简单类比一下:你想查"钱包平均价格",不需要读完整本商品目录,只需要:
- 找到"价格"列
- 定位到"钱包"那一行
TableRAG就是这样工作的。它用预训练编码器匹配列名,用向量搜索定位单元格值,最后让LLM只处理精简后的行列数据。
效果怎么样?TableRAG用更短的prompt,取得了更高的准确率,比传统整表输入的方法强多了。

板块2:图片处理 - 两条技术路线对比
图片处理有两条路,各有各的适用场景。
路线一:多模态LLM
用GPT-4V、LLaVA这类模型,直接"看图说话",提取图像中的关键信息生成摘要,然后把摘要转成文本走RAG流程。
优点:能力强,图片里有什么都能理解
缺点:贵,延迟高,消耗大量token
路线二:OCR + 文本LLM
先用OCR把图片里的文字识别出来,然后用传统文本LLM处理。
优点:便宜,可以用现成的文本RAG管道
缺点:只能处理文字信息,图片里的图表、示意图就废了
怎么选?有个简单的判断标准:
- 文档里图片是"信息图"(图表、示意图)→ 用多模态LLM
- 文档里图片是"带文字的截图"(截图、扫描件)→ 用OCR+文本LLM
还有一个折中方案:只对包含关键信息的图片调用多模态LLM,其他图片直接丢弃或用简单OCR处理,能省不少成本。

板块3:代码块处理 - Text2Code让LLM"写程序查数据"
代码块的处理思路很巧妙:不让LLM硬算,让它写代码。
Google提出的Million-Token方法就是干这个的。LLM遇到表格数据查询问题,不是自己在那算,而是生成Python代码或SQL语句,然后让程序执行引擎跑一遍,返回结果。
这就好比给LLM一个计算器,让它自己按计算,而不是指望它硬背答案。
Text2Code的核心流程:
- LLM理解用户问题
- 生成查询代码(Python/SQL)
- 程序执行引擎运行代码
- 结果返回给LLM
- LLM基于结果生成最终回答
这套方法特别适合百万级单元格的超大表格场景。传统方法要么token不够用,要么算出来是错的。Text2Code让LLM专注"理解问题"和"生成代码",把"计算"这个苦力活外包给程序。

板块4:异构文档 - HeteQA混合处理方案
真实业务里的文档往往是"大杂烩"——文本、表格、图片、代码块全搅在一起,怎么办?
华为云的HeteQA方案给出了一个不错的答案:SQL执行+文本检索混合模式。
它的思路是:文档类型不同,处理方式就不同。
- 表格数据 → SQL执行引擎精确查询
- 纯文本段落 → 传统文本检索
- 图片 → 多模态理解模块
- 代码块 → Text2Code执行
然后用一个"全能协调器"把这些模块的结果整合起来,给出最终答案。
实际效果:HeteQA在5步内解决了93.55%的问题,准确率提升超过10%。
类比一下:就像一个全能的图书馆管理员,既能用索引卡片(SQL)查结构化数据,也能翻阅正文(文本检索)找答案,还能看插图(多模态)理解图解内容。

面试怎么答
基础版(直接背):
处理复杂文档需要针对不同元素采用不同策略。表格用TableRAG框架,通过模式检索匹配列名、单元格检索定位值,只提取相关行列信息,避免整表输入。图片处理有两条路:多模态LLM(GPT-4V/LLaVA)能力强但成本高,适合信息图;OCR+文本LLM成本低,适合文字截图。代码块用Text2Code方法,让LLM生成代码、程序执行,避免硬算错误。混合异构文档用HeteQA方案,SQL执行处理表格、文本检索处理段落、多模态处理图片。
加分版(增加亮点):
在基础方案上补充具体数据:TableRAG以更短prompt取得更高准确率,代表2024年表格RAG的主流方向;HeteQA混合模式准确率提升超10%。技术选型建议:成本敏感场景选OCR方案,效果优先场景选多模态LLM。底层原理理解:模式检索用预训练编码器是因为列名语义匹配需要语义理解能力,单元格检索比逐行扫描高效是因为向量相似度计算替代了O(n)遍历。
一句话总结
表格用TableRAG拆开查、图片看场景选多模态或OCR、代码块用Text2Code执行、异构文档用HeteQA混合处理。

文章已生成并保存到指定路径。
