首页/AI/RAG 与向量库速查/ColBERT 后期交互检索

ColBERT 后期交互检索

ColBERT 类模型为查询与文档的每个 token 生成向量,用 MaxSim 求和打分:介于双塔(快但粗)与交叉编码(准但慢)之间,适合需要细粒度匹配又要求可扩展的场景。

RAG 与向量库速查AI更新于 2026-10-13

ColBERT 在做什么

ColBERT 类模型为查询和文档的每个 token 各生成一个向量,打分时对每个查询 token 取它与文档全部 token 的最大相似度,再把这些最大值求和(MaxSim)。它介于双塔模型(快但粗)与交叉编码器(准但慢)之间:细粒度匹配能力接近交叉编码,同时文档向量可以离线预计算,支持全库检索。代价是索引体积按 token 数放大。

基本信息

打分方式MaxSim:查询每 token 取与文档全部 token 的相似度极值后求和
存储特征每个 token 一个向量,索引体积显著大于单向量方案
代表工作ColBERT 与后续的改进版本,以及支持多向量的检索库
架构位置介于双塔检索与交叉编码重排之间

典型使用场景

  • 细粒度问答:答案藏在长段落里的某一句,需要词级匹配能力
  • 专业语料检索:术语、缩写密集,单向量容易被相似但不相干的段落干扰
  • 替代重排链路:不想再维护一套交叉编码器时,用后期交互一步完成召回与排序
  • 多语言混合语料:token 级匹配对跨语言术语有一定容忍度
  • 高价值小语料:愿意用更大索引体积换取精度,且总量可控

MaxSim 打分概念

MaxSim 打分概念
score(q, d) = Σ_i max_j ( E_qi · E_dj )

# q、d 各自保留 token 级向量,进入多向量索引
# 查询每个 token 与文档全部 token 取极值匹配(MaxSim)再求和
# 存储:每 token 一个向量,索引体积大于单向量方案
# 因此规模预估时要按平均 token 数放大存储预算

三类模型对比

类型匹配精度成本特征
双塔单向量较高索引最小,检索最快
后期交互多向量更高索引体积按 token 数放大
交叉编码器最高必须逐对打分,无法做全库检索
常见分工—双塔召回加重排,或后期交互一步到位
多向量索引的存储与检索复杂度高于单向量:规模预估时按平均 token 数放大预算,否则上线后索引体积会远超预期。
后期交互不能被当成纯重排器使用:把它接在单向量召回之后、只对少量候选打分,就放弃了它全库检索的能力,收益也就打了折扣。

易错点

  • 按单向量内存估算多向量索引,容量规划严重不足
  • 把 ColBERT 当纯重排用而不建多向量索引,没发挥其检索能力
  • 未评估检索延迟:多向量打分计算量随候选数上升,与双塔不在一个量级
  • 忽略长度分布:长文档 token 数多,索引膨胀主要来自长片段

数据来源与参考

  • Khattab & Zaharia, ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (SIGIR 2020)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌