当前位置: 首页 > news >正文

文献分享: 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=1nj=1m(SA)ij

  1. 数据结构
    • 评分矩阵 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=qipj,由此构成 S ∈ R n × m \textbf{S}\text{∈}\mathbb{R}^{n\text{×}m} SRn×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} ARn×m
  2. ColBERT \text{ColBERT} ColBERT版本,通过调整对齐矩阵 A \textbf{A} A,让其选择评分矩阵 S \textbf{S} S每行最大的一个值,最后除以 Z Z Z归一化
    image-20250306233530006
  3. 传统的训练方式:最大化批内正样本 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)}} LCElogb=1BeColBERT(Q,Pb)eColBERT(Q,Pb)

2️⃣传统 ColBERT \text{ColBERT} ColBERT的流程

image-20250313215730217
  1. 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
  2. 收集向量:加载 n × k ′ n\text{×}k^\prime n×k个候选 Token \text{Token} Token所属的段落,收集这些段落中所有的 Token \text{Token} Token向量
  3. 评分与重排:对这些段落应用全精度的 ColBERT \text{ColBERT} ColBERT非线性相似度以进行重排

3️⃣研究的动机

  1. 传统 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进行检索
  2. 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检索效果不佳

  1. 例子的详细情况:
    • 正段落 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
  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的训练

  1. 批内 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
  2. 与传统 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对段落进行评分

  1. 获取候选段落:
    • 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个候选段落
  2. 相似度填充:
    • 排序:其检索 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
      image-20250323015940873

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️⃣检索结果:

  1. 域内检索: XTR \text{XTR} XTR MS-MARCO \text{MS-MARCO} MS-MARCO nDCG@10 \text{nDCG@10} nDCG@10优于绝大部分模型
  2. 零样本检索:即在未接触过的数据集上测试泛化能力, XTR \text{XTR} XTR表现优异,如在 BEIR \text{BEIR} BEIR上达到了 SOTA \text{SOTA} SOTA
  3. 多语言检索:无需二次训练,就能在 MIRACL \text{MIRACL} MIRACL上取得良好的性能

2.2. \textbf{2.2. } 2.2. 结果分析

1️⃣对 Token \text{Token} Token检索的分析

  1. 黄金 Token \text{Token} Token:即来自 Groumd Truth \text{Groumd Truth} Groumd Truth段落中的 Token \text{Token} Token,实验证明 XTR \text{XTR} XTR的检索结果要包含更多黄金 Token \text{Token} Token
  2. 词法 Token \text{Token} Token:即与查询 Token \text{Token} Token相匹配的 Token \text{Token} Token,而 XTR \text{XTR} XTR检索结果中包含更少的词法 Token \text{Token} Token,即降低了对词法匹配的依赖

2️⃣对评分高效性的分析

  1. 评分函数:传统的 ColBERT \text{ColBERT} ColBERT模式需要加载所有的候选段落 Token \text{Token} Token,而 XTR \text{XTR} XTR只需检索到的 Token \text{Token} Token是为一种简化方法
  2. 实验结果:让 XTR \text{XTR} XTR的简化评分模式应用在传统 ColBERT \text{ColBERT} ColBERT模型上时性能雪崩,但应用在 XTR \text{XTR} XTR上时性能几乎没有损失

3️⃣训练超参数分析:

  1. 训练时的 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
  2. 训练批次大小: 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)个候选段落

  1. 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)次运算
  2. 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]

  1. 梯度计算:对于正样本 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{PQ,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=Z1Pr{PQ,P1:B} Z Z Z是段落中被检索到 Token \text{Token} Token的数量
  2. 梯度分析:传统 ColBERT \text{ColBERT} ColBERT正样本 Token \text{Token} Token得分会很低, XTR \text{XTR} XTR改变了归一化策略,使得正样本的 Token \text{Token} Token被迫获得更高的得分

http://www.mrgr.cn/news/95450.html

相关文章:

  • 【数学建模】最大最小值模型详解
  • 子集和问题---递归搜索
  • Resume全栈项目(.NET)
  • 【第22节】windows网络编程模型(WSAAsyncSelect模型)
  • 计划变动的坐标系-基线
  • 众乐影音-安卓NAS-Player的安装和设置说明
  • 蓝桥杯 之 第27场月赛总结
  • vim的一般操作(分屏操作) 和 Makefile 和 gdb
  • 浔川社团官方联合会维权成功
  • 【LeetCode 热题100】 22. 括号生成 的算法思路及python代码
  • 深入了解Spring事务及其使用场景
  • C++Primer学习(13.2 拷贝控制和资源管理)
  • PostgreSQL:数据类型与运算符
  • 单表达式倒计时工具:datetime的极度优雅(智普清言)
  • Linux操作系统7- 线程同步与互斥4(基于POSIX条件变量的生产者消费者模型)
  • 第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器
  • 基于大模型的甲状舌管囊肿全流程预测与临床方案研究报告
  • 2025海外华文新媒体高级人才研修班在广西南宁举办
  • 代码随想录算法训练营第十四天(2)|151.翻转字符串里的单词
  • WSL 导入完整系统包教程