文献分享: XTR——优化Token级检索的高效多向量模型
原文章
文章目录
1. XTR \textbf{1. XTR} 1. XTR原理
1.1. \textbf{1.1. } 1.1. 导论
1️⃣多向量相似度的问题定义: ColBERT ( Q , P ) = 1 Z ∑ i = 1 n ∑ j = 1 m ( S ∘ A ) i j \displaystyle\text{ColBERT}(Q,P)\text{=}\frac{1}{Z} \sum_{i=1}^{n} \sum_{j=1}^{m}(\textbf{S}\text{∘}\textbf{A})_{ij} ColBERT(Q,P)=Z1i=1∑nj=1∑m(S∘A)ij
- 数据结构
- 评分矩阵 S \textbf{S} S:令查询 Q = { q 1 , q 2 , … , q n } Q\text{=}\left\{q_{1},q_2,\ldots,q_{n}\right\} Q={q1,q2,…,qn}以及段落 P = { p 1 , p 2 , . . . , p m } P\text{=}\{p_1,p_2,...,p_m\} P={p1,p2,...,pm},记子内积为 s i j = q i ⊤ p j s_{ij}\text{=}{q}_{i}^{\top}{p}_{j} sij=qi⊤pj,由此构成 S ∈ R n × m \textbf{S}\text{∈}\mathbb{R}^{n\text{×}m} S∈Rn×m
- 对齐矩阵 A \textbf{A} A:让每个元素 a i j ∈ { 0 , 1 } a_{ij}\text{∈}\{0,1\} aij∈{0,1}来对 S \textbf{S} S中的元素进行不同强度的选择,由此构成 A ∈ R n × m \textbf{A}\text{∈}\mathbb{R}^{n\text{×}m} A∈Rn×m
- ColBERT \text{ColBERT} ColBERT版本,通过调整对齐矩阵 A \textbf{A} A,让其选择评分矩阵 S \textbf{S} S每行最大的一个值,最后除以 Z Z Z归一化
- 传统的训练方式:最大化批内正样本 P + ∈ P 1 : B = [ P 1 , … , P B ] {P}^{+}\text{∈}{P}_{1:B}\text{=}\left\lbrack{{P}_{1},\ldots ,{P}_{B}}\right\rbrack P+∈P1:B=[P1,…,PB]的得分,即最小化 L C E = – log e ColBERT ( Q , P b ) ∑ b = 1 B e ColBERT ( Q , P b ) {\mathcal{L}}_{\mathrm{{CE}}}\textbf{= }–\log\cfrac{e^{\text{ColBERT}\left( {Q,{P}_{b}}\right)}}{\displaystyle{}\sum_{{b\textbf{=}1}}^{B}e^{\text{ColBERT}\left( {Q,{P}_{b}}\right)}} LCE= –logb=1∑BeColBERT(Q,Pb)eColBERT(Q,Pb)
2️⃣传统 ColBERT \text{ColBERT} ColBERT的流程
![]()
- Token \text{Token} Token检索:用查询单向量集中每个 q i q_i qi检索 k ′ k^\prime k′个段落 Token \text{Token} Token,最多产生 n × k ′ n\text{×}k^\prime n×k′个候选 Token \text{Token} Token
- 收集向量:加载 n × k ′ n\text{×}k^\prime n×k′个候选 Token \text{Token} Token所属的段落,收集这些段落中所有的 Token \text{Token} Token向量
- 评分与重排:对这些段落应用全精度的 ColBERT \text{ColBERT} ColBERT非线性相似度以进行重排
3️⃣研究的动机
- 传统 ColBERT \text{ColBERT} ColBERT面临的问题
- 训练上:与推理不一致,传统 ColBERT \text{ColBERT} ColBERT的旨在优化最终 ColBERT \text{ColBERT} ColBERT评分,而推理过程旨在获得 Top- k \text{Top-}k Top-k的 Token \text{Token} Token
- 开销上:收集 Top- k \text{Top-}k Top-k候选段落的多有 Token \text{Token} Token空间开销巨大,由此后续精确距离的计算成本也巨大
- 泛化上: ColBERT \text{ColBERT} ColBERT的评分函数是非线性的,阻碍了使用 MIPS \text{MIPS} MIPS进行检索
- XTR \text{XTR} XTR的改进
- 训练阶段:重新设计了训练目标函数,使得模型能优先检索出最有价值的段落 Token \text{Token} Token
- 重排阶段:完全省去回溯(收集)步骤,直接只用检索到的段落 Token \text{Token} Token来构成
- 缺失补充:只考虑检索到的 Token \text{Token} Token难免漏掉相关的 Token \text{Token} Token,故 XTR \text{XTR} XTR还会对缺失 Token \text{Token} Token进行自动评分
1.2. XTR \textbf{1.2. XTR} 1.2. XTR的训练和推理
1️⃣举例说明:为何传统 ColBERT \text{ColBERT} ColBERT训练方式对 Token \text{Token} Token检索效果不佳
- 例子的详细情况:
- 正段落 P + P^+ P+:所有 Token \text{Token} Token与 q i q_i qi的相似度均为 0.8 0.8 0.8,则最终段落 P + P^+ P+评分为 0.8 0.8 0.8
- 负段落 P − P^- P−:大多 Token \text{Token} Token与 q i q_i qi的相似度均为 0 0 0,但少数几个 Token \text{Token} Token与 q i q_i qi相似度超过 0.8 0.8 0.8,导致最终段落得分仍然有 0.2 0.2 0.2
- 训练和推理的偏差:
- 训练时:认为得分越高者为越好,即会选择 P + P^+ P+
- 推理时:推理的任务是检索与 q i q_i qi最相似的段落 Token \text{Token} Token,如果进行 Top-1 \text{Top-1} Top-1检索则最终会回溯到选择 P − P^- P−
2️⃣ XTR \text{XTR} XTR的训练
批内 Token \text{Token} Token检索的训练策略:
- 给定一个查询 Q = { q 1 , . . . , q n } Q\text{=}\{q_1,...,q_n\} Q={q1,...,qn}和一批共 B B B个段落向量 P ( i ) = { p 1 ( i ) , . . . , p m ( i ) } P^{(i)}\text{=}\{p_1^{(i)},...,p_m^{(i)}\} P(i)={p1(i),...,pm(i)}
- 为每个 q i q_i qi在所有的段落向量集中执行 Top-K \text{Top-K} Top-K搜索,将每个 q i q_i qi的 Top-K \text{Top-K} Top-K段落向量相应位设为 1 1 1
- 将矩阵按段落拆分,就得到了段落的对齐矩阵
- 将每行被激活的子相似度的最大值相加,再除以归一化参数 Z Z Z(即有几行有被激活的相似度),得到最终的相似度评分
- 零处理机制:当一个段落所有 Token \text{Token} Token都没有足够高相似度(对齐矩阵全 0 0 0),会将归一化参数 Z Z Z设为很小的一个数避免除以 0 0 0
与传统 ColBERT \text{ColBERT} ColBERT训练的对比:还是回到原来的例子
- ColBERT \text{ColBERT} ColBERT:不论 P + P^+ P+被选择与否,都会被给予很高的得分,导致模型最终无法正确选出 P + P^+ P+
- XTR \text{XTR} XTR:极端情况如 P + P^+ P+的每个 Token \text{Token} Token都不是 q i q_i qi的 Top-K \text{Top-K} Top-K,导致 P + P^+ P+被打零分造成高损失,迫使模型调整以能正确选择 P + P^+ P+
3️⃣推理阶段:使用检索到的 Token \text{Token} Token对段落进行评分
- 获取候选段落:
- MIPS \text{MIPS} MIPS检索:对所有 n n n个查询向量 q i q_i qi执行 Top- k ′ \text{Top-}k^\prime Top-k′检索,得到 k ′ k^\prime k′个最相似的段落 Token \text{Token} Token
- 回溯(但不收集):回溯这 n k ′ nk^\prime nk′个 Token \text{Token} Token所属的段落,确定 C C C个候选段落
- 相似度填充:
- 排序:其检索 q i q_i qi的 Top- k \text{Top-}k Top-k为 p ( 1 ) , p ( 2 ) , . . . , p ( k ) p_{(1)},p_{(2)},...,p_{(k)} p(1),p(2),...,p(k),假设这些 Token \text{Token} Token与 q i q_i qi的相似度从高到低为 ⟨ q i , p ( 1 ) ⟩ , . . . , ⟨ q i , p ( k ) ⟩ \left\langle{q_i,p_{(1)}}\rangle,...,\langle{q_i,p_{(k)}}\right\rangle ⟨qi,p(1)⟩,...,⟨qi,p(k)⟩
- 填充:令被检索到的 Token \text{Token} Token中的相似度最低者为 m i = ⟨ q i , p ( k ) ⟩ m_i\text{=}\langle{q_i,p_{(k)}}\rangle mi=⟨qi,p(k)⟩,直接用 m i m_i mi去填充一切其它(未被检索到 Token \text{Token} Token)的相似度
- 得分:填充后再取每个段落相似度矩阵每行相似度的最大值相加,然后除以行数归一化,避免了某一行贡献的相似度为 0 0 0
2. \textbf{2. } 2. 实验与分析
2.1. \textbf{2.1. } 2.1. 实验配置与结果
1️⃣训练设置:在 MS-MARCO \text{MS-MARCO} MS-MARCO上微调 XTR \text{XTR} XTR,使用来自 Rocket-QA \text{Rocket-QA} Rocket-QA的一组难负样本
2️⃣检索结果:
- 域内检索: XTR \text{XTR} XTR在 MS-MARCO \text{MS-MARCO} MS-MARCO上 nDCG@10 \text{nDCG@10} nDCG@10优于绝大部分模型
- 零样本检索:即在未接触过的数据集上测试泛化能力, XTR \text{XTR} XTR表现优异,如在 BEIR \text{BEIR} BEIR上达到了 SOTA \text{SOTA} SOTA
- 多语言检索:无需二次训练,就能在 MIRACL \text{MIRACL} MIRACL上取得良好的性能
2.2. \textbf{2.2. } 2.2. 结果分析
1️⃣对 Token \text{Token} Token检索的分析
- 黄金 Token \text{Token} Token:即来自 Groumd Truth \text{Groumd Truth} Groumd Truth段落中的 Token \text{Token} Token,实验证明 XTR \text{XTR} XTR的检索结果要包含更多黄金 Token \text{Token} Token
- 词法 Token \text{Token} Token:即与查询 Token \text{Token} Token相匹配的 Token \text{Token} Token,而 XTR \text{XTR} XTR检索结果中包含更少的词法 Token \text{Token} Token,即降低了对词法匹配的依赖
2️⃣对评分高效性的分析
- 评分函数:传统的 ColBERT \text{ColBERT} ColBERT模式需要加载所有的候选段落 Token \text{Token} Token,而 XTR \text{XTR} XTR只需检索到的 Token \text{Token} Token是为一种简化方法
- 实验结果:让 XTR \text{XTR} XTR的简化评分模式应用在传统 ColBERT \text{ColBERT} ColBERT模型上时性能雪崩,但应用在 XTR \text{XTR} XTR上时性能几乎没有损失
3️⃣训练超参数分析:
- 训练时的 Top- k train \text{Top-}k_{\text{train}} Top-ktrain和推理时的 Top- k ′ \text{Top-}{k^\prime} Top-k′
- Top- k ′ \text{Top-}{k^\prime} Top-k′:当 k ′ {k^\prime} k′增大时 XTR \text{XTR} XTR模型性能必将提升,因为更多 Token \text{Token} Token能提供更完整的信息
- Top- k train \text{Top-}k_{\text{train}} Top-ktrain:当然也是 k train k_{\text{train}} ktrain越大越好,在于训练时适应了处理更多 Token \text{Token} Token的能力
- 二者间:用较小的 k train k_{\text{train}} ktrain训练模型时,能在较小的 k ′ {k^\prime} k′下取得更好的推理效果,源于模型能学习如何高效利用有限 Token \text{Token} Token
- 训练批次大小: XTR \text{XTR} XTR总体上偏好更大的训练批次,因为大批次能增加负样本数量,从而提升模型表现力
4️⃣定性分析:一言以蔽之就是 XTR \text{XTR} XTR更关注上下文相关性, ColBERT \text{ColBERT} ColBERT反而更依赖词汇匹配
3. \textbf{3. } 3. 其它分析
1️⃣复杂度分析: XTR \text{XTR} XTR和 ColBERT \text{ColBERT} ColBERT都面临 O ( n k ′ ) O(nk^\prime) O(nk′)个候选段落
- ColBERT \text{ColBERT} ColBERT运行的复杂度
- 假设段落平均长度为 m ˉ \bar{m} mˉ,则需加载 O ( m ˉ n k ′ ) O(\bar{m}nk^\prime) O(mˉnk′)个段落 Token→ \text{Token→} Token→进行 O ( m ˉ n 2 k ′ ) O(\bar{m}n^2k^\prime) O(mˉn2k′)次内积
- 考虑到每次内积要 O ( d ) O(d) O(d)次运算,所以总共需要 O ( m ˉ n 2 d k ′ ) O(\bar{m}n^2dk^\prime) O(mˉn2dk′)次运算
- XTR \text{XTR} XTR运行的复杂度:比 ColBERT \text{ColBERT} ColBERT降低了约 4000 \text{4000} 4000倍
- 不需要收集候选段落的所有 Token \text{Token} Token,只需要收集每个段落中被检索到的 Token \text{Token} Token,设平均每个段落中有 r ˉ \bar{r} rˉ个被检索到 Token \text{Token} Token
- 然而考虑到这些被检索到的 Token \text{Token} Token其内积相似度已经得到了,故不用管 O ( d ) O(d) O(d),最终需要进行 O ( r ˉ n 2 k ′ ) O(\bar{r}n^2k^\prime) O(rˉn2k′)次运算
2️⃣梯度分析:对于一批样本中的正负样本 P − , P + ∈ P 1 : B = [ P 1 , … , P B ] {P}^{-},{P}^{+}\text{∈}{P}_{1:B}\text{=}\left\lbrack{{P}_{1},\ldots ,{P}_{B}}\right\rbrack P−,P+∈P1:B=[P1,…,PB]
- 梯度计算:对于正样本 P + P^+ P+中最大的 Token \text{Token} Token相似度 P i j ^ + P^{+}_{\hat{ij}} Pij^+,以及负样本 P − P^{-} P−中最大的 Token \text{Token} Token相似度 P i j ^ − P^{-}_{\hat{ij}} Pij^−
模型 正样本梯度 负样本梯度 参数 ColBERT \text{ColBERT} ColBERT ∂ L C E ∂ P i ȷ ^ + =– 1 m Pr { P + ∣ Q , P 1 : B } \cfrac{\partial\mathcal{L}_{CE}}{\partial{}P_{i\hat{\jmath}}^{+}}\text{=}–\cfrac{1}{m}\text{Pr}\left\{P^{+}\mid{}Q,P_{1:B}\right\} ∂Pi^+∂LCE=–m1Pr{P+∣Q,P1:B} ∂ L C E ∂ P i ȷ ^ − = 1 m Pr { P − ∣ Q , P 1 : B } \cfrac{\partial\mathcal{L}_{CE}}{\partial{}P_{i\hat{\jmath}}^{-}}\text{=}\cfrac{1}{m}\text{Pr}\left\{P^{-}\mid{}Q,P_{1:B}\right\} ∂Pi^−∂LCE=m1Pr{P−∣Q,P1:B} m m m是段落中所有 Token \text{Token} Token的数量 XTR \text{XTR} XTR ∂ L C E ∂ P i ȷ ^ + =– 1 Z + Pr { P + ∣ Q , P 1 : B } \cfrac{\partial\mathcal{L}_{CE}}{\partial{}P_{i\hat{\jmath}}^{+}}\text{=}–\cfrac{1}{Z^{+}}\text{Pr}\left\{P^{+}\mid{}Q,P_{1:B}\right\} ∂Pi^+∂LCE=–Z+1Pr{P+∣Q,P1:B} ∂ L C E ∂ P i ȷ ^ − = 1 Z − Pr { P − ∣ Q , P 1 : B } \cfrac{\partial\mathcal{L}_{CE}}{\partial{}P_{i\hat{\jmath}}^{-}}\text{=}\cfrac{1}{Z^{-}}\text{Pr}\left\{P^{-}\mid{}Q,P_{1:B}\right\} ∂Pi^−∂LCE=Z−1Pr{P−∣Q,P1:B} Z Z Z是段落中被检索到 Token \text{Token} Token的数量 - 梯度分析:传统 ColBERT \text{ColBERT} ColBERT正样本 Token \text{Token} Token得分会很低, XTR \text{XTR} XTR改变了归一化策略,使得正样本的 Token \text{Token} Token被迫获得更高的得分