← 返回题库
RAG 检索增强困难
RAG 重排序:Cross-Encoder 与 Bi-Encoder 区别?ColBERT 呢?
#重排序#cross-encoder#bi-encoder#late interaction
题目
RAG 系统中常在初检后加重排序(Rerank)。请对比 Cross-Encoder、Bi-Encoder 与 ColBERT 的原理与适用场景。
参考答案
Bi-Encoder(双编码器,初检用):
- Query 与文档分别独立编码成向量,用点积/余弦相似度比较。
- 文档向量可预计算并索引,查询时只需编码 query + 向量检索。
- 速度快(O(1) 检索),但 query 与文档无交互,精度有限。
- 代表:bge、gte、jina 等 embedding 模型。
Cross-Encoder(交叉编码器,精排用):
- 把 query 与文档拼接后一起送入 Transformer,输出单一相关分。
- query 与文档每个 token 在注意力层充分交互,精度高。
- 无法预计算(每对都要前向),对大库逐对打分不现实。
- 用法:初检召回 Top-K(如 50–100),再用 Cross-Encoder 精排到 Top-5。
- 代表:bge-reranker、ms-marco-MiniLM。
ColBERT(Late Interaction,折中方案):
- query 与文档分别编码成 token 级向量序列(而非单向量),保留细粒度。
- 相似度用 MaxSim:对 query 每个 token,找文档中最相似的 token 向量,求和。
- 文档 token 向量可预计算(late interaction),查询时只算交互。
- 精度接近 Cross-Encoder,速度接近 Bi-Encoder,是优雅的折中。
对比表:
| 方案 | 交互 | 预计算 | 速度 | 精度 | 适合 |
|---|---|---|---|---|---|
| Bi-Encoder | 无 | 可 | 极快 | 中 | 初检 |
| Cross-Encoder | 全交互 | 不可 | 慢 | 高 | 精排(小集合) |
| ColBERT | 延迟交互 | 部分 | 中 | 高 | 中等规模精排 |
工程实践:
- 标配:Bi-Encoder 初检 Top-50 → Cross-Encoder 精排 Top-5 → 喂 LLM。
- 中等规模(百万级文档)可考虑 ColBERT 直接做检索 + 精排一体化。
面试加分点:
- 指出”初检是召回率游戏(别漏),精排是精度游戏(别错)“——两段式是性能与精度的工程权衡。
- ColBERT 的”late interaction”思想影响深远,ColBERTv2 + PLAID 把延迟压到可用范围。
- rerank 对 RAG 效果提升常比换 embedding 模型更显著,是高性价比优化点。
出处:LlamaIndex 文档、ColBERT 论文《ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT》、RAG 面经。
内容来源
整理自 LlamaIndex 文档与 ColBERT 论文相关面经
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。