上下文多模态文档检索开源思路-CMDR模型架构实现方法
现有多模态文档检索的两大缺陷Benchmark 层面现有的多模态文档检索基准如 SlideVQA、MMLongBench、ColPali/ViDoRe、VisR-Bench 等都是【直接检索】——query 和目标 page 之间存在明显的词汇或语义匹配。忽略了真实文档中存在的跨页依赖、文档全局结构。模型层面ColPali、VisRAG、DSE、UniSE 等主流方法都是独立编码每一页隐式假设上下文对 embedding 无益。但实际中一个代词、一个缩写、一个表格续行的 header可能只在别的页出现。往期CMDRContextual Multimodal Document Retrieval是一个新的多模态文档检索任务要求系统在利用文档上下文的前提下从多页文档即一组有序的文档图像中检索出相关页面。输入queryqqq 多页文档D{I1,…,In}\mathcal{D} \{I_1, \dots, I_n\}D{I1,…,In}输出top-kkk页D⊂D\mathcal{D}^ \subset \mathcal{D}D⊂D且k≪nk \ll nk≪n关键约束识别D\mathcal{D}^D必须依赖上下文页面推理而不是仅看D\mathcal{D}^D自身内容下面主要看一下模型架构设计模型架构CMDR-Embed总体思想是Chunk-then-Split先联合编码后拆分与 ColPali 最本质的区别ColPali 等是每页独立过 LVLM得到独立 embeddingCMDR-Embed是连续多页当成一个 chunk 一起过 LVLMtoken-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(t−1)1,…,Is(t−1)w}每个 chunk 送进 LVLM → 得 token-level 表示 → 按页拆成EnI∈RNI×D\mathbf{E}^{\mathbf{I}}_n \in \mathbb{R}^{N^I \times D}EnI∈RNI×D当 chunks 重叠sws wsw时同一页可能出现在多个 chunk取更早那个 chunk 的表示避免重复计算最优配置s2,w4s2, w4s2,w4每个 chunk 4 页每次滑 2 页相邻 chunk 有 2 页重叠Q为什么滑动窗口而不是全文档一次编码A显存/算力限制 提高实用性重叠又保证了 chunk 之间的信息交互。Multimodal Late InteractionLI多向量检索沿用 ColBERT/ColPali 的多向量匹配方式不用单向量 mean poolingLI(q,In)∑i∈[1,Nq]maxj∈[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]max⟨Eqi,EnIj⟩即query 的每个 token 找 page 中最相似的 token取内积再对所有 query token 求和。保留了 token 级细粒度对文档检索有图表、小文字、表格尤其重要。去掉 LI 改用 mean pooling cosineCMDR-Embed-Pali 直接掉26.5 分49.8 → 23.3。训练目标CMCLContextual 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 Retrievalhttps://arxiv.org/abs/2607.05927v1https://github.com/nttmdlab-nlp/CMDR-Bench