论文笔记:ColBERT: Efficient and Effective Passage Search via Contextualized Late Inter

1,898 阅读4分钟

导语

1 简介

近年来,深度检索模型的发展极大促进了IR社区的发展。相比于传统的统计特征(BM25、TF-IDF),深度检索模型借助各种语言模型对文档进行编码表示,能够在语义层面进行检索匹配和排序,取得了非常好的效果。然而,深度检索模型的一大痛点在于效率低(每次新的query都要重新过一遍LM得到语义表征)。

如上图所示,BERT的性能非常好,然而速度相比于BM25则是慢了2到3个数量级,这是用户所无法容忍的;本文提出了ColBERT,一种引入late interaction的BERT模型,相比于其他方法,ColBERT能保持与BERT相当的性能表现同时延迟则低了2个数据级。ColBERT既可以当做一个排序模块,也可以实现端到端的检索。

2 相关工作

最简单的深度检索模型即双编码模型 (Bi-Encoder,图(a))。其把query和doc进行分别编码成一个向量,再对它们计算cosine similarity或点积作为最终相关度分数。

在预训练模型兴起之后,Query-Document Interaction和Full interaction (图2(b),(c)) 的形式变得常见,这类方法把query和doc都输入预训练模型,通过attention在整个神经网络的每一层都进行交互计算,得到了非常好的效果。但其具有致命的缺点:计算速度慢,对于低延迟的应用场景不适用。而且,更严重的问题是,doc无法进行线下预计算和建立索引,会导致实际部署时的服务器负载非常高(每一个进来的query都要和所有的document拼接进行上下文编码输出,当文档数目N很大时,这是不现实的),不实际。

3 ColBERT

ColBERT采用Late interaction的方法来对速度和性能进行这折中。该模型不仅可以用于粗召回(即一开始先通过一些模块过滤一些完全不相关的文档)之后的Reranking阶段,也可以实现实际的端到端部署。

模型其实只有一个BERT编码器,用于对Query和Document进行编码,使用前缀符[Q]与[D]来标识不同的输入。作者对输入进行token-level的编码。例如,给定一个Question Q=q0q1……ql 和Document D=d1d2……dn,编码方式如下:

这里有几点需要注意:

  1. Eq和Ed是一个列表,其中的每个元素即token对应的hidden state;
  2. #代表[MASK]用于填充至最大长度;
  3. CNN用于降维;
  4. Filter指的是去掉标点符号和停用词的hidden state;

最终,使用这两个token representation的list进行MaxSim操作:

即对query中的每个token与doc中的所有token计算Sim值并取出最大值,再将其求和作为最终分数(注意:一共计算了|Eq|次,所以不受Document的长度影响)。

作为Reranking模块使用

ColBERT可以直接作为Reranking模块使用。其中,Document部分的表示列表[Ed]可以通过离线计算得到,每次仅需要计算Eq即可。之后,通过张量之间的乘法可以在一个Batch内得到所有的相关性分数,最后进行排序即可。

端到端使用

端到端使用时,假设q的长度为Nq,那么对每个Question的token表示在document库中进行检索,得到Top-K’个相关文档,一共并行执行Nq次,所以最终得到不多于Nq*K’个文档,然后将ColBERT当做Reranking模块进行使用即可。

4 实验评估

消融实验

主要的实验设定如下:

  • [A]为了验证Late interaction的有效性:仅使用BERT输出的[CLS]进行点积作为相关性分数;
  • [B]为了验证MaxSim的有效性:将MaxSim操作替换为AverageSim;
  • [C]为了验证padding with masked tokens的有效性;
  • [D]只微调5层Transformer层的ColBERT;
  • [D]微调12层Transformer层的ColBERT;
  • [E]加上端到端检索的ColBERT;

5 总结

本文介绍了ColBERT,这是一种新的排序模型,它在深度LM(特别是BERT)上使用上下文化后,使用late interaction来实现高效检索。通过将查询和文档独立编码为细粒度表示,ColBERT可以利用深度LM的表现力,同时大大加快查询处理速度。此外,ColBERT可以直接从大型文档集合中进行端到端神经检索。实验结果表明,与现有的基于bert的模型相比,ColBERT的速度快170倍以上,所需的FLOPs/查询次数少14,000倍,同时对质量的影响最小,并且优于每个非BERT基线。