文献分享-ConstBERT固定数目向量编码文档
文献分享: ConstBERT固定数目向量编码文档
😂图放这了,大道至简的
idea \text{idea}
idea 不愧是
ECIR \text{ECIR}
ECIR
👉
1. ConstBERT \textbf{1. ConstBERT} 1. ConstBERT 的原理
1️⃣模型的改进点:相较于
ColBERT \text{ColBERT}
ColBERT 为每个
Token \text{Token}
Token 生成一个向量,
ConstBERT \text{ConstBERT}
ConstBERT 只为段落生成固定
C C
C 个向量
嵌入阶段:为查询
Q Q
Q 和段落
P P
P 的每个
Token \text{Token}
Token 都生成一个
d d
d 维向量,是为
{ q 1 , … , q N } {q_{1},\ldots,q_{N}}
{
q
1
,
…
,
q
N
} 和
{ p 1 , … , p M } {p_{1},\ldots,p_{M}}
{
p
1
,
…
,
p
M
}
线性变换:拼接所有段落单向量为
[ p 1 , ⋯ , p M ] ∈ R d M \left[p_{1},\cdots,p_{M}\right]\text{∈}\mathbb{R}^{dM}
[
p
1
,
⋯
,
p
M
]
∈
R
d
M ,进行
W ∈ R M k × C k \mathbf{W}\text{∈}\mathbb{R}^{Mk\text{×}Ck}
W
∈
R
M
k
×
C
k 投影得
[ δ 1 , ⋯ , δ C ]
W T [ p 1 , ⋯ , p M ] ∈ R d C \left[\delta_{1},\cdots, \delta_{C}\right]\text{=}\mathbf{W}^{T}\left[p_{1},\cdots,p_{M}\right]\text{∈}\mathbb{R}^{dC}
[
δ
1
,
⋯
,
δ
C
]
=
W
T
[
p
1
,
⋯
,
p
M
]
∈
R
d
C
后期交互:同
ColBERT \text{ColBERT}
ColBERT ,为每个
q i q_i
q
i
找到与其内积最大的
MaxSim ( q i , δ )
δ p i \text{MaxSim}(q_i,\delta)\text{=}\delta_{p_i}
MaxSim
(
q
i
,
δ
)
=
δ
p
i
,最后将所有
MaxSim \text{MaxSim}
MaxSim 相加得到相似度评分
2️⃣改进的动机:为何非要固定数目的段落向量
存储效率上:设定
C < M C\text{<}M
C
<
M 后,能降低段落嵌入所占的空间
计算效率上:设定
C < M C\text{<}M
C
<
M 后,将原有
O ( M N ) O(MN)
O
(
MN
) 的查询复杂度降为了
O ( C N ) O(CN)
O
(
CN
)
系统级优化:使得内存对齐,规避了变长文档表示导致内存碎片化,从而降低了
Cache Miss \text{Cache Miss}
Cache Miss
2. ConstBERT \textbf{2. ConstBERT} 2. ConstBERT 的实验结果
1️⃣效果:当
C
32 C\text{=}32
C
=
32 时,在
MsMarco/BEIR \text{MsMarco/BEIR}
MsMarco/BEIR 等数据集上,查询效果与
ColBERT \text{ColBERT}
ColBERT 相当(用
MRR@10/nDCG@10 \text{MRR@10/nDCG@10}
MRR@10/nDCG@10 衡量)
2️⃣效率:相比
ColBERT \text{ColBERT}
ColBERT 对段落的存储空间需求减少了一半多,端到端检索响应速度也显著加快