一句话定义:Multi-Vector Retrieval(多向量检索)指同一篇文档用多个向量来表示——标题一个、每个段落一个、摘要一个——检索时分别计算相似度再合并,而不是把整篇文档压成一个向量。
为什么需要它:单向量检索(single-vector retrieval)把整篇文档交给嵌入模型(embedding model),压成一个稠密向量(dense vector)。文档一长,这个向量就成了「平均脸」:一段讲报销流程,一段讲违约责任,混在一起后哪一段都不像了。
打个比方:单向量像给一栋楼只拍一张大门照片,有人问「三楼有没有会议室」只能靠猜;多向量像给每个房间都拍一张,再附一张楼层索引,问什么都能对上具体那一间。
三种常见做法:
- 切块(chunking):文档切成段,每段一个向量;命中段落后,再返回整篇或相邻上下文,也就是常说的「小块检索、大块返回」。
- 摘要或假设问题:让大模型为每段生成摘要,或「这段话能回答什么问题」;这些文本各存一个向量,用户提问更容易命中。
- 迟交互(late interaction,如 ColBERT 类方法):连 token 都各留一个向量,查询与文档在词级别做最大匹配打分。
代价在存储和打分:
- 存储:向量条数等于「文档数 × 每篇向量数」,索引体积随之上涨,内存占用和构建时间都要重新考虑。
- 打分:一次AI 词典:余弦相似度">余弦相似度变成「多次打分并聚合」。取最大值还是求和?同一篇文档有 3 个段落命中,分数怎么合并、怎么去重?聚合规则直接决定召回质量,要按产品需要来调整。
- 链路变长:先召回 top-k 个块,再按文档分组聚合成 top-n 篇,多了一道工程活。
| 维度 | 单向量检索 | 多向量检索 |
|---|---|---|
| 表示粒度 | 一篇文档 1 个向量 | 一篇文档 N 个向量 |
| 长文档细节 | 容易被平均掉 | 段落级细节保留 |
| 存储开销 | 小 | 约为单向量的 N 倍 |
| 打分方式 | 一次相似度比较 | 多次打分后聚合、去重 |
| 工程复杂度 | 低 | 中到高 |
| 适合场景 | 短文本、FAQ | 长文档、合同、法规、代码库 |
不要和混合检索混淆:混合检索(hybrid search)指「向量加关键词(如 BM25)两路召回再融合」,说的是检索信号种类;多向量说的是表示粒度。两者可以叠加。
对从业者:做 RAG 时,如果用户问的细节总被长文档「稀释」,先检查切块与表示方式,不要急着换模型。多向量是用存储换精度——召回更稳、定位更准,但成本更高、可调参数更多。不少向量数据库支持一文档多向量或多字段索引,具体能力和限制以官方文档为准。
对普通人:你在企业知识库问「试用期多久」,系统能精确找到员工手册第 4 页那一段,而不是把整本手册模糊地推给你。
