上下文多模态文档检索开源思路-CMDR模型架构实现方法

上下文多模态文档检索开源思路-CMDR模型架构实现方法

现有多模态文档检索的两大缺陷:

  • Benchmark 层面:现有的多模态文档检索基准(如 SlideVQA、MMLongBench、ColPali/ViDoRe、VisR-Bench 等)都是【直接检索】——query 和目标 page 之间存在明显的词汇或语义匹配。忽略了真实文档中存在的:跨页依赖文档全局结构

  • 模型层面:ColPali、VisRAG、DSE、UniSE 等主流方法都是独立编码每一页,隐式假设"上下文对 embedding 无益"。但实际中:一个代词、一个缩写、一个表格续行的 header,可能只在别的页出现。

往期:

CMDR(Contextual Multimodal Document Retrieval)是一个新的多模态文档检索任务,要求系统在利用文档上下文的前提下,从多页文档(即一组有序的文档图像)中检索出相关页面。

  • 输入:queryqqq+ 多页文档D={I1,…,In}\mathcal{D} = \{I_1, \dots, I_n\}D={I1,,In}
  • 输出:top-kkkD+⊂D\mathcal{D}^+ \subset \mathcal{D}D+D,且k≪nk \ll nkn
  • 关键约束:识别D+\mathcal{D}^+D+必须依赖上下文页面推理,而不是仅看D+\mathcal{D}^+D+自身内容

下面主要看一下模型架构设计

模型架构:CMDR-Embed

总体思想是Chunk-then-Split(先联合编码,后拆分)

与 ColPali 最本质的区别:ColPali 等是每页独立过 LVLM,得到独立 embedding;CMDR-Embed连续多页当成一个 chunk 一起过 LVLM,token-level 表示自然带上跨页上下文;再按页边界切开,得到每页的 contextualized embedding。

Contextualized Multimodal Encoding(滑动窗口机制)

给定NNN页的文档{I1,…,IN}\{I_1, \ldots, I_N\}{I1,,IN}

  • stridesss、windowwww的滑动窗口
  • ttt个 chunk 是{Is(t−1)+1,…,Is(t−1)+w}\{I_{s(t-1)+1}, \ldots, I_{s(t-1)+w}\}{Is(t1)+1,,Is(t1)+w}
  • 每个 chunk 送进 LVLM → 得 token-level 表示 → 按页拆成EnI∈RNI×D\mathbf{E}^{\mathbf{I}}_n \in \mathbb{R}^{N^I \times D}EnIRNI×D
  • 当 chunks 重叠(s<ws < ws<w)时,同一页可能出现在多个 chunk:取更早那个 chunk 的表示(避免重复计算)
  • 最优配置:s=2,w=4s=2, w=4s=2,w=4(每个 chunk 4 页,每次滑 2 页,相邻 chunk 有 2 页重叠)

Q:为什么滑动窗口而不是全文档一次编码?
A:显存/算力限制 + 提高实用性;重叠又保证了 chunk 之间的信息交互。

Multimodal Late Interaction(LI,多向量检索)

沿用 ColBERT/ColPali 的多向量匹配方式(不用单向量 mean pooling):

LI(q,In)=∑i∈[1,Nq]max⁡j∈[1,NI]⟨Eqi,EnIj⟩ \mathbf{LI}(q, I_n) = \sum_{i \in [1, N^q]} \max_{j\in [1, N^I]} \langle\mathbf{E}^{\mathbf{q}_i},\mathbf{E}^{\mathbf{I}_j}_n\rangleLI(q,In)=i[1,Nq]j[1,NI]maxEqi,EnIj

即:query 的每个 token 找 page 中最相似的 token,取内积,再对所有 query token 求和。保留了 token 级细粒度,对文档检索(有图表、小文字、表格)尤其重要。


去掉 LI 改用 mean pooling + cosine,CMDR-Embed-Pali 直接掉26.5 分(49.8 → 23.3)。

训练目标:CMCL(Contextual Multimodal Contrastive Learning)

问题:联合编码带来的"信息泄漏",Chunk-then-split 会让同 chunk 内不同页的表示互相"污染"(因为它们过了同一次 attention),页级判别性下降 —— 邻近页面 embedding 变得太像,反而检索不出目标页。

解法:两种"上下文感知硬负例",

在标准 InfoNCE 基础上引入两类hard negative

硬负例类型定义直觉
In-Chunk NegativesIchunk\mathcal{I}_{\text{chunk}}Ichunk与正例同一 chunk 内的其他页当相似上下文出现在邻近页时最有效;防止相邻页 embedding 过于相似
In-Document NegativesIdoc\mathcal{I}_{\text{doc}}Idoc同一文档的其他 chunk当相似信息出现在远处页面时最有效;保持全文档判别性

短距离靠 in-chunk、长距离靠 in-doc。

CMCL Loss函数:

其中:

实验

参考文献

  • CMDR: Contextual Multimodal Document Retrieval,https://arxiv.org/abs/2607.05927v1
  • https://github.com/nttmdlab-nlp/CMDR-Bench