语义检索系统如何选择合适的embedding模型

最近在关注语义检索。语义检索中很重要的一步就是选择文本嵌入的模型。在知乎上看到这篇文章还不错。

作者:失落的萨特
链接:https://www.zhihu.com/question/623845779/answer/3250104565
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

最近几年向量召回(embedding–based retrieval,dense encoder)在IR领域大放异彩,已经是各个公开数据集的SOTA。相比传统的query分词–>倒排索引–>BM25这个pipeline,向量召回最主要两个优点,一是语义粒度泛化,解决vocabulary mismatch的问题。二是end2end,解决表征学习和下游排序目标的一致性问题。

如何选择合适自己系统的向量召回模型,可以从以下几点考虑:

  1. 系统复杂度:索引量有多大,线上多少机器,决定能用多大的模型。总体上模型越复杂,效果越好,但是资源开销越大。
  2. 是否finetune:直接使用开源预训练模型,比如BERT/T5等,还是要在自己的训练数据上finetune。如果要微调,还要看训练资源和数据量的问题。总体上,用自己系统的数据微调的模型效果要大幅好于直接用预训练模型。
  3. 模型效果:要找到目前最好的向量召回模型,应该关注几个相关顶会(SIGIR,KDD等)的论文,也可以关注检索任务benchmark的leaderboard(比如MS MACRO)等。截止23年10月,在ms macro上比较领先的模型应该有ColBERT v2,SPLADE v2,CoCondenser,uniformer等。每一类模型有不同的侧重点,比如splade属于稀疏表征,colbert属于稠密表征。具体用那种可以结合不同的业务需求和系统情况。
  4. 关于近几年向量召回的几篇论文解读也可以参考:[SIGIR 21-22' | NAVER] SPLADE v1, v2 and beyound,[NAACL '22 | Standford] ColBERTv2,[KDD '23 | Microsoft] Unifier
  5. 评价指标:评价召回模型一般会用Recall@K来衡量模型对于相关结果在某个横截面的召回率,一般K越大,任务越简单,召回率越高。如果K越小,指标会侧重对top集合的召回率。K的设置应该参考线上向量召回的实际召回量。
  6. 是否向量模型越好,实际效果越好:一般向量召回只是信息检索系统的第一阶段,后面还可能会有粗排、精排、重排、策略等多个环节。如果从业务效果角度来说,召回模型对最终展示结果的影响路径较长,自然对业务结果的影响也比较间接。所以并不能一定说召回模型的Recall提升,系统实际效果一定会提升。但是总体而言,召回决定了信息检索系统的“天花板”,如果天花板越高,在后续排序模型适配的情况下,实际效果就会越好。这个信念也要求我们工作中,一定不能只关注系统漏斗的最终环节,而要从源头开始优化。

你可能感兴趣的:(语义检索,语义检索)