引言
今天带来一篇多模态RAG的论文笔记:ColPali: Efficient Document Retrieval with Vision Language Models。
引入了一种利用视觉语言模型文档理解能力的检索模型架构ColPali,从文档页面图像上生成高质量的上下文嵌入,结合延迟交互匹配机制。开源在 https://huggingface.co/vidore 。
为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。
1. 总体介绍
文档检索将用户查询与给定语料库的相关文档进行匹配。
图 1:对于用户查询中的每个词语,ColPali 会识别出最相关的文档图像块(突出显示区域),并计算查询到页面的匹配分数。然后,我们可以快速从大型预索引语料库中检索出最相关的文档。
本篇工作主要由两点贡献:
- ViDoRe 我们认为文档检索系统也要考虑检索文档的上下文和视觉元素,因此我们发布了ViDoRe,一个用于评估系统在页面级文档检索方面的性能,涵盖了视觉元素和语言。
- ColPali 提出了一种基于视觉语言模型(Vision Language Models, VLMs)的新型模型架构和训练策略,可以有效地从文档的视觉特征对其进行索引,允许随后使用后期交互机制进行快速查询匹配。
2. 问题陈述 & 相关工作
问题设定 检索系统对语料库 D \mathcal D D中的文档 d d d和查询 q q q的相关性进行平分。计算语料库 ∣ D ∣ |\mathcal D| ∣D∣个文档中每个的相似度得分 s ( q , d ) ∈ R s(q,d) \in \R s(q,d)∈R,然后进行排名以提取最相关的文档。
我们专注于页面级检索: 给定一个查询,系统是否检索到正确的文档页面? 这里的文档指单个页面。同时对评分系统施加了延迟约束。目前多数检索系统可以分解为:(1) 离线索引节点,构建文档索引。 (2) 在线查询阶段, 查询与索引中的文档匹配,并且低延迟对用户体验至关重要。
高效的文档检索系统展现了高检索性能(R1)、低查询延迟(R2)和高索引吞吐量(R3)的联合特性。
2.1 文本检索方法
文本空间中的文档检索 基于词频的统计方法,如TF-IDF和BM25,简单和高效,仍被广泛使用。
神经网络检索器 在双编码器模型(bi-encoder)中,文档被独立离线地映射到一个密集的向量空间,查询在线嵌入,并通过快速余弦距离计算与文档匹配。一种速度较慢但性能略高的替代方案是交叉编码器(Cross-encoder)系统。
后期交互的多向量检索 每个文档词元被预先计算嵌入并索引。运行时可以计算单个查询词元嵌入的相似度。利用单个查询词元和文档词元之间的丰富交互,同时利用双编码器带来的离线计算和快速查询匹配优势。
检索评估 目前没有基准同时考虑文本和视觉文档特征数来评估文档检索方法。
2.2 整合视觉特征
对比视觉语言模型 通过对比损失对齐分离的视觉和文本编码器,已经实现了将文本内容隐藏的表示映射到相应视觉内容表示。虽然这些模型中存在一些OCR功能,但视觉组件通常没有针对文本理解进行优化。FLIP框架将后期交互机制扩展到跨模态视觉-语言模型,依赖于文本交际和图像块之间的最大相似度操作。
视觉丰富文档理解 为了超越文本,一些面向文档的模型联合编码文本标记以及视觉或文档布局特征。VLM在视觉问答、字幕生成和文档理解方面展现出强大的能力,但并未针对检索任务进行优化。
3. ViDoRe基准
ViDoRe旨在全面评估检索系统在页面级将查询与相关文档进行匹配的能力。包含多个子任务,重点关注各种模态——文本、图像、信息图表、表格。
4. 基于后期交互的视觉检索
4.1 架构
图 2:与标准检索方法相比,ColPali 简化了文档检索,同时在更低的延迟下取得了更强的性能。
视觉语言模型 将VLM用于检索,利用多模态微调过程中获得的文本和图像标记输出嵌入之间的对齐。我们引入了ColPali,能够生成文本和图像的ColBERT风格的多向量表示,基于Paligemma-3B的扩展。添加了一个投影层,将输出语言模型嵌入映射到一个降维的向量空间 D = 128 D=128 D=128。
后期交互 给定查询
q
q
q和文档
d
d
d,分别用
E
q
∈
R
N
q
×
D
E_q \in \R^{N_q \times D}
Eq∈RNq×D和
E
d
∈
R
N
d
×
D
E_d \in \R^{N_d \times D}
Ed∈RNd×D表示它们在公共嵌入空间
R
D
\R^D
RD中的多向量表示。后期交互算子
LI
(
q
,
d
)
\text{LI}(q,d)
LI(q,d)是所有查询标记向量
E
q
(
j
)
E_q^{(j)}
Eq(j)与每个文档标记嵌入向量
E
d
(
1
:
N
d
)
E_{d(1:N_d)}
Ed(1:Nd)的最大点积之和:
LI
(
q
,
d
)
=
∑
i
∈
[
∣
1
,
N
q
∣
]
max
j
∈
[
∣
1
,
N
d
∣
]
⟨
E
q
(
i
)
,
E
d
(
j
)
⟩
(1)
\text{LI}(q,d) = \sum_{i \in [|1,N_q|]} \max_{j \in [|1,N_d|]} \langle E_q^{(i)} , E_d^{(j)} \rangle \tag 1
LI(q,d)=i∈[∣1,Nq∣]∑j∈[∣1,Nd∣]max⟨Eq(i),Ed(j)⟩(1)
对比损失 后期交互操作是完全可微的,允许反向传播。令批次
{
q
k
,
d
k
}
k
∈
[
∣
1
,
b
∣
]
\{q_k,d_k\}_{k \in [|1,b|]}
{qk,dk}k∈[∣1,b∣]由
b
b
b个查询-文档对组成,其中对于所有
k
∈
[
∣
1
,
b
∣
]
k \in [|1,b|]
k∈[∣1,b∣],
d
k
d_k
dk是与查询
q
k
q_k
qk对应的文档。将批内对比损失
L
\mathcal L
L定义为正分数
s
k
+
=
LI
(
q
k
,
d
k
)
s_k^+ = \text{LI}(q_k,d_k)
sk+=LI(qk,dk)相对于最大负分数
s
k
−
=
max
l
,
l
=
k
LI
(
q
k
,
d
l
)
s^-_k = \max_{l,l=k} \text{LI}(q_k,d_l)
sk−=maxl,l=kLI(qk,dl)的softmax交叉熵。
4.2 模型训练
数据集 训练数据集包含127460个查询-文档对。
参数 所有模型都在训练集上训练1个epoch;使用bfloat16格式训练模型;LoRA:在Transformer层以及最终随机初始化的投影层上 α = 32 , r = 32 \alpha=32,r=32 α=32,r=32;使用paged_adamw_8bit优化器;学习率为5e-5;线性衰退;2.5%预热步长;批大小32。
查询增强 在查询标记后添加5个标记,作为一种软可微查询扩展或重新加权机制,如ColBERT的做法。
5. 结论
作者引入了 ColPali,这是一种新颖的检索模型,它利用最新的生成式视觉语言模型,仅从视觉文档特征创建高性能的多向量嵌入。
总结
⭐ 作者介绍了一种新的多模态检索框架ColPali,可以生成文本和图像的ColBERT类多向量表示,也引入后期交互计算每个查询标记和文档标记之间的交互,最终得到一个分数可用于检索排名。