Skip to content
← Blog

别再给视觉大模型塞十页文档:深入解析ViSAR的免训练自适应检索

Based on: ViSAR: Training-Free Adaptive-$k$ Retrieval for Visual Document Question Answering — Adrien Mialland, Marc Plantevit, Julien Gallois, Céline Robardet

视觉语义激活检索

如果要求视觉语言模型在长文档中定位信息,标准的文档检索架构可能会做出极其低效的操作。它们使用视觉编码器对每个页面截图独立打分,对列表进行排序,然后将固定的前五或前十页交给庞大的大型视觉语言模型(LVLM)。

如果查询很简单,证据可能只存在于一个页面上,而其余检索到的页面则添加了无关的视觉上下文。模型仍然会处理那些对回答问题没有帮助的表格、页眉和布局。相反,僵化的预算限制可能会在问题需要多个页面的信息时遗漏证据。

这一困境源于现代视觉文档检索中的一个根本性设计选择:固定的 top-$k$ 选择。现有方法通常无论查询复杂度如何都检索相同数量的页面,尽管确定特定问题需要多少页面会直接影响延迟和答案质量。

2026年9月2日,Adrien Mialland、Marc Plantevit、Julien Gallois 和 Céline Robardet(来自里昂国立应用科学学院、法国国家科学研究中心、LIRIS、EPITA 和 Lowit)发表了一篇研究论文,提出了一种优雅的替代方案:ViSAR(Visual Semantic Activation Retrieval,视觉语义激活检索)。ViSAR 在推理时动态确定要检索的页面数量,而无需训练视觉编码器。通过分析晚期交互嵌入空间中已存在的交互,ViSAR 在报告的实验中将端到端问答延迟降低了高达 58.7%,同时保持或提高了答案准确率。

扫描的财务审计报告

晚期交互编码器中的盲点

要理解 ViSAR 的工作原理,首先要了解视觉文档检索器是如何运作的。

传统的基于文本的检索需要光学字符识别(OCR)将像素转换为文本字符串,然后再进行嵌入。这一过程可能会遗漏视觉内容和文档特定的布局。现代的无 OCR 视觉检索器,包括 ColPali 和 ColQwen2.5,则将页面截图表示为共享空间中的一组视觉补丁嵌入(visual patch embeddings)。用户查询也以类似的方式由多个嵌入表示。

相关性是通过晚期交互(late interaction)计算的,其核心是由 ColBERT 引入的 MaxSim 算子:

$$S_{Q, P^p} = \sum_{i=1}^m \max_{j \in {1, \dots, n_p}} \langle q_i, v_j^p \rangle$$

对于每一个查询嵌入 $q_i$,检索器会在页面 $p$ 上的视觉补丁嵌入 $v_j^p$ 中进行搜索,取最高相似度,并将这些峰值对齐值求和。

晚期交互实现了细粒度的查询-页面匹配以及离线页面编码。然而,它存在两个结构性局限:

  1. 独立的页面评估:检索器独立地为每个页面生成相关性分数,未能利用跨页面的语义结构。
  2. 均匀的语义权重:在标准的晚期交互分数中,每个查询嵌入和页面嵌入的贡献是均匀的。

文本检索已通过词频统计、学习到的重要性估计或稀疏表示来解决相关的权重问题。但这些方法依赖于离散的标记结构或额外的训练,无法直接扩展到视觉嵌入。

因此,晚期交互生成的是一个标量分数的排序列表。之前的自适应 $k$ 方法依赖于分数启发式规则,例如识别连续分数之间的最大间隙或对分数分布进行聚类。而 ViSAR 则利用晚期交互表示中编码的语义结构。

ViSAR 的工作原理:解码语义激活

ViSAR 并不改变底层编码器的权重。相反,它保留了标准晚期交互(late interaction)通常会坍缩为标量分数的多向量交互。

该架构分为四个顺序阶段:计算查询到页面的权重、推导补丁级重要性、构建查询条件化的页面相似度矩阵,以及最小化自适应分区代价函数。

查询与页面嵌入
         │
         ▼
[1. 查询到页面] ──► 权衡查询语义与页面共激活
         │
         ▼
[2. 页面到查询] ──► 逆转 MaxSim 并推导补丁级权重
         │
         ▼
[3. 页面到页面]  ──► 跨页面匹配加权视觉补丁 (N x N 矩阵)
         │
         ▼
[4. 自适应-k]    ──► 评估连贯性与泄漏以选择最优 k*

1. 查询到页面的交互加权

标准晚期交互会将查询向量 $q_i$ 与页面 $p$ 之间的交互立即坍缩为一个总和。ViSAR 保留了完整的激活矩阵:

$$A_{p,i} = \max_{j} \langle q_i, v_j^p \rangle$$

该值表示查询语义 $i$ 在页面 $p$ 的任何位置上的表现强度。ViSAR 通过其在文档页面间的均值($\hat{A}_{p,i}$)对该激活值进行归一化,并乘以其归一化的页面间标准差进行缩放:

$$\tilde{A}{p,i} = \hat{A}{p,i} \cdot \hat{\sigma}_i$$

在页面间具有相似激活的查询嵌入会被降权,而具有更强、空间局部化激活的查询嵌入则会获得更多强调。

基于这些调制后的激活值,ViSAR 计算两个权重:

  • 查询嵌入权重 ($w_i$):公式为 $w_i = \log(N / (1 + a_i))$,其中 $a_i = \sum_p \tilde{A}_{p,i}$。这惩罚了普遍存在的语义内容,并强调稀疏激活。
  • 页面权重 ($w_p$):衡量语义共激活。在判别性查询语义共同激活的页面中获得更高的重要性。

2. 页面到查询的交互加权

接下来,ViSAR 逆转了搜索方向。它不仅询问页面与查询的匹配程度,还评估页面上每个视觉补丁与查询的相关性。

对于每个视觉补丁 $v_j^p$,ViSAR 通过取跨查询向量的最大对齐值,并结合第一步中计算的令牌和页面权重进行调制,来计算其相关性得分 $r_j^p$:

$$r_j^p = \max_i \left[ \langle v_j^p, q_i \rangle \cdot \tilde{A}_{p,i} \cdot \hat{w}_i \cdot \hat{w}_p \right]^2$$

然后对相关性进行中心化和阈值处理:

$$w_j^p = \max(0, r_j^p - \text{mean}_{p,j}(r_j^p))$$

这种阈值处理会产生权重为零的非活动补丁。某些页面可能完全变为非活动状态,这些页面无需参与页面到页面的相似度计算。

3. 页面到页面的交互矩阵

有了加权补丁后,ViSAR 测量跨页面关系。对于源页面 $P^p$ 和目标页面 $P^{p'}$,它计算页面 $p$ 上的加权补丁与页面 $p'$ 上的加权补丁的匹配程度:

$$S_j^{p \to p'} = \hat{w}j^p \cdot \max{j'} \left[ \langle v_j^p, v_{j'}^{p'} \rangle \cdot \hat{w}_{j'}^{p'} \right]$$

ViSAR 对前 $T=50$ 个补丁交互取平均值并开平方,得到方向性相似度得分:

$$\text{Sim}(p, p') = \sqrt{\frac{1}{T} \sum_{j \in \mathcal{T}} S_j^{p \to p'}}$$

由于源补丁在目标页面中独立地寻找其最佳对应项,这种相似度是方向性的:$\text{Sim}(p, p') \neq \text{Sim}(p', p)$。将这些成对得分组合起来,创建一个以用户查询为条件的 $N \times N$ 页面级相似度矩阵。

4. 通过连贯性和泄漏实现自适应-k

为了决定检索的截断点,ViSAR 使用自相似度得分 $s_p = \text{Sim}(p, p)$ 对页面进行排名。

对于每个候选截断值 $k$,文档被分为两组:包含前 $k$ 个页面的候选相关集 $R_k$,以及包含其余页面的不相关集 $I_k$。

对于每个页面 $p \in R_k$,ViSAR 评估两种相反的力量:

  • 内部连贯性 ($c_k^p$):页面 $p$ 与检索到的候选集 $R_k$ 中页面之间的平均相似度。
  • 外部泄漏 ($l_k^p$):页面 $p$ 与被丢弃的页面集 $I_k$ 中页面之间的平均相似度。

候选集大小 $k$ 的整体质量使用代价函数 $J(k)$ 进行评分:

$$J(k) = \sum_{p \in R_k} w_p^s \left( c_k^p - \gamma l_k^p \right)$$

这里,$\gamma$ 是泄漏惩罚参数,在报告的实验中设置为 $10^5$。找到最优页面数 $k^\star$ 需要评估最多 $N$ 个候选集,而不是穷举评估 $2^N$ 个可能的子集。该方法还评估最小值是否对应于代价函数中的急剧转变。

数据揭示:更精简的检索集与更快的推理

作者在配备 48 GB 显存的 NVIDIA A6000 GPU 上,针对两个多页基准测试——MMLongBenchLongDocURL——对 ViSAR 进行了评估。这两个数据集均提供了用于评估页面排序的答案证据页,以及需要文本和视觉推理的文档问答场景。

他们测试了三种视觉晚期交互编码器——ColQwen2.5、ColPali 和 ColModernVBERT,并对比了使用 Tesseract OCR 的文本检索器(ColBERTv2)以及单向量视觉检索器(VisRAG-Ret)。答案生成采用 Qwen2.5-VL-7B-Instruct,而 Qwen2.5-14B-Instruct 则作为基于少样本结构化输出的 LLM-as-a-judge 评估器。

在这两个基准测试中,真实证据平均需要 1.9 个页面:MMLongBench 的中位数为 1 页,LongDocURL 的中位数为 2 页。

1. 检索效率与上下文压缩

表 1 展示了自适应检索方法相对于 Oracle(定义为标准晚期交互排序中包含所有证据页的最小 top-$k$ 窗口)的表现:

编码器 方法 MMLongBench 平均 $k^\star$ MMLongBench 中位数 LongDocURL 平均 $k^\star$ LongDocURL 中位数
ColQwen2.5 Oracle (Late-Int.) 8.3 2 10.7 3
Score-Cluster 18.6 8 36.6 20
Largest-Gap 15.4 2 28.7 3
ViSAR (Ours) 4.7 3 7.9 5
ColPali Oracle (Late-Int.) 8.8 2 12.4 3
Score-Cluster 18.7 8 35.8 18
Largest-Gap 16.2 3 24.7 2
ViSAR (Ours) 5.3 3 8.1 6
ColModernVBERT Oracle (Late-Int.) 10.5 2 13.0 3
Score-Cluster 23.0 12 47.4 44
Largest-Gap 20.0 4 39.3 4
ViSAR (Ours) 7.5 4 13.5 11

Oracle 结果表明,检索所有证据页所需的窗口大小往往远大于证据页数量本身所暗示的大小。由于底层的晚期交互排序可能会将无关页面排在证据页之前,因此为了包含所有证据,往往需要扩大检索窗口。

Score-Cluster 和 Largest-Gap 通常比 ViSAR 检索更多的页面。在基于 ColQwen2.5 的 MMLongBench 测试中,ViSAR 平均检索 4.7 页。虽然其召回率低于 Largest-Gap(75.16% 对 81.12%),但精确度更高(50.37% 对 45.13%),从而倾向于生成更紧凑的检索集。

2. 下游问答准确率

报告的结果显示,自适应检索可以在最多使用五页或十页输入预算的情况下提高答案准确率。

检索方法 MMLongBench Max-5 MMLongBench Max-10 LongDocURL Max-5 LongDocURL Max-10
固定 Top-$k$ 基线
ColBERTv2 (OCR + Text) 24.51% 24.70% 47.18% 47.70%
M3DocRAG (ColPali) 34.86% 35.08% 59.31% 58.71%
VisRAG-Ret (Single-Vector) 34.48% 35.69% 57.29% 58.02%
ColQwen2.5 (Fixed Top-$k$) 35.04% 35.69% 59.79% 59.27%
自适应检索 (ColQwen2.5)
Largest-Gap 35.79% 35.88% 61.01% 60.89%
Score-Cluster 36.25% 35.97% 60.00% 59.83%
ViSAR (Ours) 36.53% 36.63% 61.06% 60.97%

在结合三种编码器、五种 LVLM、两种页面预算和两个数据集的 60 种配置中,ViSAR 在 24 种情况下提高了准确率,在其余 36 种情况下保持了准确率。论文报告称没有出现统计上显著的下降。在使用 ColQwen2.5 和 ColPali 时,结果总体呈上升趋势,根据 McNemar 检验,LongDocURL 上的改进具有统计显著性($p < 0.05$)。

最大的改进出现在作者描述为对较长上下文更敏感的 LVLM 中,这与 ViSAR 减少检索页面和无关页面的特性一致。

3. 延迟红利

在评估的视觉文档流程中,实际瓶颈在于 LVLM 的生成时间。固定 top-$k$ 检索总是填满 LVLM 的输入预算,而 ViSAR 会调整页面数量,仅在需要时才使用全部预算。

ViSAR 引入了来自 patch 加权计算和跨页相似度计算的检索开销。但论文发现,对于大多数评估的文档大小,这种开销对总成本的贡献微乎其微,而生成延迟的减少主导了端到端的结果。

MMLongBench 在 Max-10 预算下的延迟:
固定 top-10: [检索][================ 生成 ================]
ViSAR:      [较大的检索步骤][====== 减少的生成 ======]
                                  端到端减少:高达 58.7%

报告的端到端延迟减少在 MMLongBench 上达到 58.7%,在 LongDocURL 上达到 38.5%(Max-10 LVLM 预算)。ViSAR 的检索开销随文档大小增长,对于包含 468 页的最大 MMLongBench 文档变得显著。补充材料针对此类情况提出了相似度矩阵近似方法。

annotated medical case file

矩阵几何:当稀疏性预示着正确答案

该论文最令人信服的观察之一在于查询条件页面相似度矩阵 $\text{Sim}(p, p')$ 的结构。

作者通过两个对比案例进行了说明:

  • 稀疏矩阵:当与查询相关的语义局部化时,只有相对较少的页面包含相关内容。此时矩阵呈现稀疏状态,代价函数 $J(k)$ 具有更尖锐的最小值,从而支持更可靠的检索边界。
  • 密集矩阵:当与查询相关的语义分布在更多页面上时,矩阵变得更加密集。对应的 $J(k)$ 最小值较浅,使得停止决策的可靠性降低。

在 MMLongBench 上对多种编码器进行的测试显示,LongDocURL 也报告了类似趋势:相似度矩阵的稀疏度越高,答案准确率也越高。

这是一个有价值的研究方向,而非一个已完成的置信度系统。作者建议,矩阵结构可以成为未来检索策略(包括迭代查询优化或证据选择)的一种无标签反馈信号,且无需额外的模型或训练。

工程注意事项:免训练剪枝的边界

ViSAR 是一项算法贡献,有几个实际限制值得注意:

  • 页面间计算随文档大小增长:ViSAR 构建页面级相似度矩阵,并以块状方式评估页面间交互,而不是作为稠密张量。其非活动页面优化避免了不必要的计算,但论文报告称,随着文档变大,检索开销也在增加。在 468 页的 MMLongBench 示例中,这种开销最为明显。
  • 编码器质量设定了上限:ViSAR 依赖于编码器已经学习到的语义结构。ColQwen2.5 和 ColPali 的表现优于 ColModernVBERT。论文将 ColModernVBERT 较为有限的增益部分归因于其较小的规模——2.5 亿参数对比 30 亿参数——以及由此导致的将语义分离为紧凑检索集的困难。
  • 观察到编码不稳定性:ColModernVBERT 在 7.31% 的 LongDocURL 查询编码过程中出现数值不稳定性。作者报告称,该问题独立于 ViSAR 发生,这些样本已从评估中排除。
  • ViSAR 倾向于紧凑检索:随着 Oracle 截止值增大,ViSAR 平均检索的页面更少,限制了无关上下文,但在某些设置中以召回率换取精确率。Largest-Gap 在 LongDocURL 上实现了最佳的综合 F1 分数,而 ViSAR 在不同 $k_{\text{Oracle}}$ 值下提供了更一致的自适应行为。

为什么这对文档流水线很重要

对于研究文档问答的团队来说,ViSAR 提供了一种替代方案,不再将检索深度视为一个永久不变的常量。

其核心发现是,多向量视觉检索器包含的信息量,远比最终的标量晚期交互(late-interaction)分数所揭示的要多。ViSAR 利用查询到页面的激活值、补丁级权重以及页面间的语义结构,来选择针对特定查询量身定制的检索集。

论文中报告的结果指出了三个具体的启示:

  1. 更紧凑的页面集:在报告的对比中,ViSAR 平均检索的页面数量少于 Oracle、Largest-Gap 和 Score-Cluster 方法。
  2. 更低的端到端延迟:在 Max-10 的预算下,它在 MMLongBench 上将端到端 RAG 延迟降低了高达 58.7%,在 LongDocURL 上降低了 38.5%。
  3. 未来检索质量研究的信号:相似度矩阵稀疏性与答案准确性之间的关系,为后续的检索和证据选择方法提供了一个潜在的反馈信号。

如果现有的视觉文档栈已经使用了 ColPali 或 ColQwen2.5 等晚期交互编码器,ViSAR 提供了一种无需训练的方式来探索自适应 $k$ 值检索。其结果表明,嵌入几何结构可以帮助决定文档流水线是否已检索到足够的页面——而无需假设每个查询都需要相同大小的固定上下文窗口。鉴于该研究主要基于英文文本,其结论在直接应用于高密度、字符数量庞大的中文文档识别场景时,可能需要针对汉字特有的视觉特征进行额外的验证与调整。