URaG: Unified Retrieval and Generation in Multimodal LLMs for Efficient Long Document Understanding¶
会议: AAAI 2026
arXiv: 2511.10552
代码: https://github.com/shi-yx/URaG
领域: 多模态大模型 / 文档理解
关键词: 长文档理解, 统一检索-生成, 跨模态检索, Transformer层注意力分析, Token效率
一句话总结¶
URaG 发现 MLLM 处理长文档时存在类人的"粗到细"推理模式(浅层注意力均匀分散、深层集中于证据页),基于此洞察在第 6 层插入轻量跨模态检索模块(仅占参数 0.05%),选取 Top-5 相关页面丢弃其余内容,实现 SOTA 性能的同时减少 44-56% 计算量。
研究背景与动机¶
- 领域现状:MLLM 在单页文档上表现出色,但多页长文档理解面临两大挑战——无关内容的信息干扰和 Transformer 平方复杂度带来的计算开销。
- 现有痛点:两类现有方案各有缺陷——(1) Token 压缩方法(如 mPLUG-DocOwl2)均匀压缩所有页面的视觉 Token,不可避免地损失细粒度视觉细节;(2) 外部检索器方法(如 CREAM、SV-RAG)引入独立检索模块增加系统复杂性,且检索器与 MLLM 无法端到端优化,容易出现"协调失败和错误传播"。
- 核心矛盾:长文档中仅少数页面包含答案证据,但现有方法要么压缩所有页面(损失精度),要么需要额外检索系统(增加复杂度)。
- 本文要解决什么? 如何在单一 MLLM 内部实现高效的证据页检索和答案生成的统一?
- 切入角度:系统分析发现 MLLM 内部已经具有类人的"粗到细"推理模式——浅层均匀浏览全局,中间层逐步聚焦,深层集中于证据页。这意味着浅层的 hidden states 已经足够区分相关/无关页面,可以在此处插入轻量检索模块。
- 核心 idea 一句话:将 MLLM 浅层变成检索器,筛选证据页后让深层只处理相关内容,统一检索与生成。
方法详解¶
整体框架¶
单一 MLLM 处理长文档:所有页面通过视觉编码器和投射层获得视觉 Token→与文本 query 拼接输入 LLM→在第 6 层插入跨模态检索模块→检索 Top-5 相关页面→丢弃其余页面的 hidden states→后续层仅处理保留的内容→生成答案。
关键设计¶
- 核心分析洞察——粗到细推理模式:
- 做什么:系统分析 MLLM 各层的注意力分布和嵌入检索能力
- 核心发现:(1) 浅层(1-3层)注意力熵高、检索准确率低——均匀浏览;(2) 中间层(3-20层)熵递减、检索准确率递增——逐步聚焦;(3) 深层(20-34层)熵低、检索准确率高——集中在证据页;(4) 最后 2 层熵又上升——类似人类回看全文确认
-
另一个关键发现:基于嵌入的检索比基于注意力的检索在更浅层就达到高准确率(约第 12 层),且更稳定——因此采用嵌入检索而非注意力检索
-
跨模态检索模块:
- 做什么:在第 6 层提取 hidden states,计算 query 与各页面的相关性,选取 Top-5
- 核心思路:两个线性层+GELU 将 \(H \in \mathbb{R}^{L \times D}\) 降维到 \(H' \in \mathbb{R}^{L \times D'}\)(D'=512),然后 L2 归一化。提取 query 文本特征 \(E_q\) 和各页视觉特征 \(E_v^{(p)}\),用 ColBERT 风格的 contextualized late interaction 计算相似度:\(s_{q,v}^{(p)} = \sum_i \max_j E_{q_i} \cdot E_{v_j}^{(p)T}\)
-
设计动机:仅需 2 个线性层(2.5-4M 参数,占总模型 0.05-0.07%),极其轻量;Late interaction 比全局池化保留了更多 Token 级别的匹配信息
-
两阶段训练策略:
- 做什么:先预训练检索模块,再联合微调 LLM
- Stage 1:冻结 MLLM 所有参数,仅训练检索模块,优化 ColBERT 检索损失 \(\mathcal{L}_{\text{retrieval}}\)
- Stage 2:添加 LoRA(rank=32)到 LLM 和检索模块,联合优化 \(\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{retrieval}} + \mathcal{L}_{\text{generation}}\)。训练时保留 GT 证据页+检索得分最高的页面(总计不超过 5 页)
- 设计动机:两阶段确保检索模块先适配任务,再与生成端协调优化
实验关键数据¶
主实验 — 文档理解¶
| 方法 | 参数 | MPDocVQA | SlideVQA | MMLongBench F1 |
|---|---|---|---|---|
| Qwen2.5-VL-3B | 3B | 84.4 | 59.1 | 24.1 |
| Qwen2.5-VL-7B | 7B | 87.2 | 66.4 | 25.1 |
| URaG-3B | 3B | 86.0 | 63.8 | 28.7 |
| URaG-7B | 7B | 88.2 | 72.1 | 32.8 |
检索性能¶
| 方法 | SlideVQA Top1/Top5 | MMLongBench Top1/Top5 |
|---|---|---|
| ColPali (3B) | 90.2/98.2 | 60.3/80.2 |
| SV-RAG (4B) | 90.6/98.8 | 64.8/84.8 |
| URaG-7B | 92.9/99.0 | 68.3/86.0 |
消融实验¶
| 配置 | SlideVQA | MMLongBench F1 | 说明 |
|---|---|---|---|
| Layer 2 | 63.7 | 31.0 | 太浅,检索不准 |
| Layer 6 (默认) | 63.8 | 31.1 | 最佳平衡 |
| Layer 12 | 62.9 | 31.0 | 检索更准但深层推理空间不足 |
| Layer 18 | 62.3 | 30.6 | 检索模块太深反而降低 |
关键发现¶
- URaG 在 SlideVQA 上比 Qwen2.5-VL-7B 提升 5.7 分(66.4→72.1),MMLongBench F1 提升 7.7 分(25.1→32.8)——长文档场景收益最显著
- 仅预训练检索模块(不微调 LLM)就已超过完全微调的 baseline(62.1 vs 61.9 on SlideVQA),说明检索本身的贡献大
- 计算效率:100 页文档时减少 55.8% FLOPs,推理时间减少 41.6%,显存减少 51.3%
- 检索模块仅占总参数的 0.05-0.07%,几乎可忽略
- 第 6 层是最佳插入位置——Top5 检索准确率已达 98.9%,且保留最多深层推理空间
亮点与洞察¶
- 粗到细推理模式的发现:MLLM 各层注意力从均匀到集中的渐变模式,为"在哪一层插入什么操作"提供了理论依据——这个分析方法可以推广到其他需要在 Transformer 中间层做操作的场景
- 极致轻量设计:2 个线性层就能把 MLLM 浅层变成高效检索器,参数量只有 0.05%——证明 MLLM 的 hidden states 已经编码了足够的跨模态语义
- 统一架构消除系统复杂性:不需要额外的检索 pipeline,端到端可优化,部署时只是一个模型
局限性 / 可改进方向¶
- 固定 Top-5 检索策略不够灵活——证据分散在>5 页时可能遗漏,集中在 1 页时引入冗余
- 训练数据仅 3 个数据集,泛化性可能受限——LongDocURL 上微调后反而退化
- 跨页面推理(multi-page evidence)性能仍弱于单页——检索更擅长定位单点证据
- 论文只在 Qwen2.5-VL 系列上验证,InternVL2.5 实验只跑了一个配置
- 检索模块丢弃了非相关页的 hidden states,如果检索出错则不可恢复
相关工作与启发¶
- vs SV-RAG: SV-RAG 用 MLLM 最后一层 hidden states 做检索(需要两次前向传播),URaG 在第 6 层中间截断只需一次——效率更高
- vs mPLUG-DocOwl2: 均匀压缩 vs 选择性保留——URaG 对保留页面不做压缩,保留了完整视觉细节
- vs CREAM: CREAM 用复杂的多轮检索+LLM重排序pipeline,URaG 用 2 个线性层在模型内部完成——简洁得多
- 启发:这种"在 Transformer 中间层做决策"的思路可以推广——例如在中间层做 Token 剪枝、动态路由、或早停判断
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 粗到细推理模式的发现+将浅层变成检索器的 idea 非常优雅
- 实验充分度: ⭐⭐⭐⭐⭐ 5个benchmark、检索+生成双维度评估、效率分析、消融、可视化
- 写作质量: ⭐⭐⭐⭐⭐ 从分析洞察到方法设计的逻辑链极其清晰
- 价值: ⭐⭐⭐⭐⭐ 统一检索-生成的范式对长文档理解有重要意义,0.05% 参数开销非常实用