检索 · 2020
后期交互
先分别为问题和文档保存词级向量,查询时再做细粒度匹配。
要解决的问题
双编码器把整段压成一个向量,快但丢了词与词的对应。交叉编码器准,但每个候选都要重算一遍。
相对前一代的变化
ColBERT 把交互推迟到打分阶段:文档向量可以离线存好,查询时用最大相似度汇总词级匹配。
做法
编码器给每个词一个向量。检索时对查询的每个词,在文档词向量里找最相近的一项,再把这些相似度加起来。
局限
词级向量比单个句向量占更多存储。它改善排序,仍然依赖第一阶段已经召回到这篇文档。
在链路中的位置
介于稠密召回和交叉编码器重排序之间,常作为更精细的第二阶段。