向量数据库

多向量表示与 late interaction(ColBERT 类)

前沿前沿专题约 25 分钟kp-032

前置知识

一句话定义

多向量表示不再把整段文本压成 1 个向量,而是每个 token 一个向量;检索打分用 late interaction——查询每个 token 与文档全部 token 向量做最大相似度再求和(MaxSim)——以"存储 ×100"的代价换回词元级的匹配精度,是稠密单向量与 cross-encoder 精排之间的第三条路线。

为什么重要

单向量是"把 512 个 token 蒸馏成一个点",细节必然有损(kp-002);cross-encoder 精排准确但每个候选都要跑一遍完整模型、无法预计算。ColBERT(SIGIR 2020)证明"文档侧可预计算 + 交互推迟到打分"能同时逼近两者:在 BEIR 类基准上显著超单向量,成本远低于 cross-encoder。多模态文档检索(ColPali 类:页面截图直接作为 token 序列)进一步把它推向文档理解场景——这是"要不要在引擎里支持多向量"选型的决策背景。

前置知识

kp-016(混合检索与精排的分层——late interaction 在管线中的位置)、kp-002(嵌入的有损性——多向量存在的理由)。

核心概念

原理与机制

MaxSim 打分公式:

score(Q, D) = Σ_{i=1..|Q|}  max_{j=1..|D|}  ⟨E_qi, E_dj⟩
E_qi: 查询第 i 个 token 的向量;  E_dj: 文档第 j 个 token 的向量
直觉: 查询的每个词都要在文档里"找到最好的对应物", 找不到(最大值低)就扣分

为什么它有效:单向量把交互压缩进"一个内积",MaxSim 把交互保留在"词元对齐"层面——专有名词、数字、否定词这些单向量容易被平均掉的信号得以保留(与 kp-015 稀疏检索的互补逻辑同源,但这里是稠密通道内部的保真)。

成本结构(决策的关键账):

维度单向量多向量(ColBERT/PLAID)cross-encoder
文档侧存储1×dm×d(PLAID 后约降 6~10×,仍远高于单向量)无(实时算)
查询延迟毫秒级 ANN粗筛+精排,数十毫秒级每候选一次模型前向,秒级
质量基线接近 rerank最高
索引支持全部少数(Vespa、Qdrant multivector 等)无索引

定位:多向量适合第二阶段精排(对粗排 top-100 做打分)或高价值小集合的一级检索;把 m×d 全量当一级 ANN 用,存储与延迟账(kp-026 口径)通常不成立。

公式或模型

见 MaxSim 式;存储账:存储 ≈ N × m × d' × bytes(d' 为投影后维度,PLAID 残差再折减),N=100 万、m=128、d'=128、fp16 ≈ 3.2 GB,比单向量(0.25 GB)高约 13 倍——能接受与否取决于业务价值密度。

图示

查询: [如何][退款][发票]          文档: [发票][丢失][报销][流程][…]
         │每个token找文档侧最像的token
 score = max⟨如何,·⟩ + max⟨退款,·⟩ + max⟨发票,·⟩
       = ⟨如何,流程⟩+⟨退款,报销⟩+⟨发票,发票⟩  ← 词元级对齐, "发票"精确命中

实例或案例

法律条文检索(条款编号与否定词敏感):单向量路线把"不包括"这类否定信号平均掉,误召回明显;ColBERT 式精排把"不得""除外"等 token 的匹配单独计入,badcase 率显著下降。工程形态:Qdrant 0.10+ 原生 multivector、Vespa 的 per-token tensor 打分;两级管线——单向量 ANN 取 top-200 → MaxSim 精排取 top-10——在延迟与质量间取得实用平衡。

直观类比

单向量检索像"凭对整本书的整体印象找书";ColBERT 像"拿着逐字索引卡到书里逐词核对"——每个查询词都必须在书里找到最好的落点。贵在书页要逐词建档(m×d 存储),准在核对是词级的。

常见误区

  1. "多向量可以无脑替代单向量"——存储与延迟账(本篇表格)在大多数大规模场景不成立;它的主流位置是精排段或小而贵的集合。
  2. "ColBERT 是另一种 BM25"——同为词元级,但 ColBERT 的匹配是稠密语义空间内的对齐(同义词仍可高分),BM25 是字面精确记账;两者互补而非替代。
  3. "引擎随便选,多向量都能跑"——多向量对索引与打分有专门要求(multi-vector 支持、tensor 打分);选型时这是 kp-027 决策树之外的独立能力项,需专项确认。
  4. "m 越大越准"——token 数由切块决定,长文档切多段各算一套多向量比无限拉长交互窗口更可控;MaxSim 对噪声 token 也敏感,质量依赖切块与清洗。

自测题

  1. MaxSim 中"max"与"Σ"各表达什么直觉?
  2. 答:max 表达"查询的每个词只需在文档中找到最佳对应"(词元对齐),Σ 表达"所有查询词的对齐质量累加,缺席的词会拉低总分"。

  3. 为什么说 ColBERT 是单向量与 cross-encoder 之间的中间路线?
  4. 答:文档侧像单向量一样可预计算索引(成本低);交互像 cross-encoder 一样做词元级打分(质量高)——把"编码"与"交互"解耦各取所长。

  5. m=256、d'=128、fp16,100 万条文档多向量存储多大?
  6. 答:1e6 × 256 × 128 × 2B ≈ 65.5 GB(PLAID 压缩后可降数倍);对照单向量同口径约 0.5 GB——存储是它作为一级检索的主要障碍。

与其他知识点的关系

kp-015/016 是"词法互补"的另一实现路径(外挂稀疏腿 vs 表示层保真);kp-026 是存储账的算法;kp-033 的 MUVERA 代表"多向量降维成单向量可检索形态"的最新尝试。

延伸阅读

Khattab & Zaharia, "ColBERT…"(SIGIR 2020)与 Santhanam et al., "ColBERTv2"(2021)——late interaction 的原始设计与 PLAID 压缩,多向量路线的两篇奠基文献。

相关知识点