多模态RAG的8个分块策略

多模态RAG的成败取决于分块。以下是针对表格和截图的8个智能选择,可改进检索、接地性和答案质量。

大多数RAG失败并非始于生成阶段。

它们更早开始于分块阶段。

您索引一个PDF。文本看起来足够干净。截图看起来被保留了。嵌入被放入。检索运行。然后模型用页面标题的一段话来回答表格问题,或者错过唯一包含您需要的工作流程的截图。

我见过这种情况发生多次。流水线看起来很复杂。分块逻辑并不复杂。

这就是多模态RAG的真实故事:表格和截图惩罚懒惰的分割。

0、为什么多模态RAG中分块变得更难

传统文本RAG已经有了分块问题。多模态RAG提高了 stakes,因为证据不仅存在于句子中。它存在于布局、单元格对齐、图标、标注、箭头、图表以及截图按空间对信息进行分组的方式中。长文档多模态检索的基准测试现在明确测试图形、表格、图表和布局级证据,因为仅靠页面文本会遗漏用户实际询问的太多内容。

这也是为什么最近的文档RAG工作将预处理分为至少两个轨道:文本提取和页面图像分析。例如,OpenAI的PDF RAG cookbook展示了提取文本和将PDF页面转换为图像以进行多模态分析两种方法。

用通俗的话说:如果您的分块忽略视觉结构,您的检索器通常会学到错误的语义单元。

这是值得记住的简单流程:

PDF / 幻灯片组 / 截图集
        ↓
将元素分区
(文本块、标题、表格、图像、页面元数据)
        ↓
创建模态感知的分块
(表格分块、截图分块、标题/上下文分块)
        ↓
使用文本、视觉或混合嵌入进行索引
        ↓
检索证据
        ↓
将接地上下文传递给生成器

非结构化的文档在这里提出了一个有用的观点:分块发生在分区之后,目标是组合文档元素以形成符合模型限制同时提高检索精度的分块。它还支持按标题、按页面和基于相似性的分块策略,而不是盲目地按字符切片。

这种区别对表格和截图非常重要。

1、按语义行而不是原始字符对表格进行分块

表格不是穿着网格线的段落。

当团队将表格扁平化为文本blob,然后每800个字符拆分一次时,他们通常会破坏使表格有用的结构。行标签与值分离。标题从后面的分块中消失。单位消失。突然之间"12.4"存在,但附近没有任何东西告诉您它是延迟、收入还是错误率。

更安全的模式是行组分块:重复标题,将相关行放在一起,并在每个分块中保留单位。在多模态基准测试中,表格 repeatedly 被指出是检索系统的主要故障区域,特别是在现实的、表格密集的环境中。

经验法则:如果人类无法在不向上滚动的情况下理解表格切片,那它可能是一个糟糕的分块。

2、与文本一起保留HTML或JSON中的表格结构

这一点被低估了。

如果您的解析器可以将表格提取为HTML或结构化元素,请保留该表示。Unstructured明确支持将表格提取为HTML,并在文档处理过程中分离嵌入表格和图像。

为什么这有帮助?因为纯文本表格丢失了太多线索:

  • 列边界
  • 合并单元格
  • 标题嵌套
  • 有意义的空单元格
  • 行分组

同时存储可读文本和结构化标记的混合分块为您的检索器提供了更多可用信息,也让您的生成器有更好的机会正确推理证据。

3、不要让截图默认继承页面大小的分块

说实话:截图是许多文本优先流水线悄悄崩溃的地方。

截图通常包含几个视觉子区域:侧边栏、图表、状态徽章、表格和模态对话框。如果您将整页图像作为一个巨大的分块进行索引,检索就会变得粗糙。您可能获得了正确的页面但却是错误的证据。

最近的多模态文档检索工作正是出于这个原因区分了页面级检索和布局级检索。MMDocIR评估整页相关性和细粒度布局检索,将表格、图表和段落视为不同的目标布局。

所以不要止步于"页面即图像"。对于截图,当内容密集时添加子区域分块。

4、将截图裁剪与本地文本和页面上下文配对

最好的截图分块通常有两层上下文:

  • 本地上下文: 描述裁剪区域的OCR文本、标签或简短标题
  • 全局上下文: 页面标题、章节名称、产品区域或相邻标题

没有本地层,检索会错过实际的视觉细节。没有全局层,来自不同页面的语义相似的截图会发生冲突。

这就是为什么纯视觉检索和混合检索变得更具吸引力的原因之一。MMDocRAG报告称,多模态系统仍然在引用选择和多模态集成方面挣扎,更好地检索相关的多模态证据仍然是一个核心挑战。

换句话说,仅靠裁剪是不够的。

5、对表格和截图使用不同的分块大小

一刀切的分块很方便。但通常也是错误的。

表格需要紧凑的重复模式分块。截图通常需要具有短文本锚点的区域感知分块。段落需要句子连贯的跨度。对它们都使用相同的token预算,您最终会为实现简单性而不是检索质量进行优化。

您可能想知道这是否过度工程化。并非如此。即使是主流的预处理指导现在也强调逻辑边界而不是任意分割,因为naive的文本墙分块会损害下游检索。

实用的做法很简单:按元素类型定义分块策略。

6、将标题、标题和图例附加到视觉证据上

没有图例的图表是猜测。

没有标签名的截图是歧义。

没有周围标题的表格通常是无用的。

这就是"按标题"或章节感知分块发挥作用的地方。如果您的分区器知道元素属于某个标题,请将该链接保留在元数据中或分块本身中。Unstructured的分块选项明确包含标题感知策略,原因就在于此。

对于表格和截图,周围文本不是装饰。是消歧。

7、当布局是信号时考虑页面图像检索

有些文档视觉结构如此复杂,以至于OCR优先的流水线变得脆弱。想想财务报表、仪表板、密集的研究PDF或UI密集的截图。ColPali在这里很有趣,因为它直接从视觉特征索引文档页面,并报告在视觉复杂任务(包括表格)上特别强劲的收益。

这并不意味着文本分块已经过时。这意味着您的分块选择应该反映证据类型。

有用的划分

  • 文本优先分块:用于大量文本的手册和干净的PDF
  • 视觉页面或区域分块:用于截图、仪表板、扫描文档和表格密集的报告
  • 混合分块:当布局和措辞都很重要时

最好的系统越来越多地看起来是混合的,因为真实文档是混合的。

8、用检索问题而不是感觉来评估分块

这可能是最重要的选择。

团队通常检查几个分块,点头表示认可,然后继续。那不是评估。那是乐观。

使用有针对性的检索测试:

  • "哪个季度的毛利率最高?"
  • "哪个截图显示了错误对话框?"
  • "表格中的阈值是什么,而不是下面段落中的?"
  • "哪一页包含延迟图的图例?"

REAL-MM-RAG展示了为什么这很重要:现实世界的多模态检索在表格密集的文档和改写的查询上仍然很弱,即使系统在更简单的情况下看起来不错。

如果您的分块无法承受释义和布局歧义,您的生成器将继承错误。

9、一个小的实现草图

这是一个比单一全局分块大小更有用的简单策略映射:

CHUNK_POLICY = {
    "Title": {"attach_to_next": True},
    "NarrativeText": {"max_tokens": 300, "overlap": 40},
    "Table": {"mode": "row_groups", "repeat_headers": True, "max_rows": 12},
    "Screenshot": {"mode": "region_aware", "include_ocr": True, "include_page_context": True},
    "Chart": {"attach_caption": True, "attach_legend": True},
}

重点不是确切的数字。重点是分块策略应该取决于文档元素类型。

10、结束语

多模态RAG失败不是因为表格困难或截图混乱。

失败是因为我们一直假装它们只是多几步的文本。

它们不是。

它们是具有空间意义的结构化证据,您的分块选择决定了检索是看到这种意义还是将其撕成装饰碎片。如果您本月只修复多模态流水线的一个阶段,请首先修复分块。

如果您一直在与表格密集的PDF、UI截图或多模态RAG中的混乱检索作斗争,请在评论中留下您堆栈中最棘手的文档类型。我经常写关于这些失败模式的文章,很可能您奇怪的边缘案例并不像感觉的那么独特。


原文链接: Multimodal RAG: 8 Chunking Calls That Matter

汇智网翻译整理,发表于汇智网