向量数据库中的混合检索(Hybrid Search)与重排(Rerank)机制
在构建生产级别的问答系统(RAG)或企业搜索引擎时,单纯依赖向量检索(Dense Retrieval)往往无法在所有场景下都取得令人满意的效果。比如,当用户输入特定专业术语、产品型号(如 "iPhone 15 Pro Max")或缩写(如 "K8s")时,向量空间中的“模糊匹配”经常会返回不相关的文档。
为了解决这一问题,目前工业界公认的标准范式是:混合检索(Hybrid Search) + 二阶段重排(Rerank)。
1. 什么是混合检索?
混合检索是指将传统的**关键字检索(Sparse Retrieval)与向量检索(Dense Retrieval)**进行融合的机制。
1.1 关键字检索(以 BM25 算法为代表)
- 原理:基于词频(TF-IDF 升级版)计算文本间的精确重合度。
- 擅长:专业术语、命名实体、精确型号匹配。
- 短板:无法理解“近义词”(如输入“番茄”,无法搜到包含“西红柿”的文档)和语义上下文。
1.2 向量语义检索(Dense Retrieval)
- 原理:基于高维嵌入向量的最近邻搜索。
- 擅长:泛化语义匹配,理解跨语境、同义词及意图。
- 短板:对稀有词、专业代码和数字极为不敏感。
1.3 结合方式:倒数排序融合(RRF, Reciprocal Rank Fusion)
如何把关键字检索的评分和向量检索的评分融合成一个最终列表?最常用的无参数融合算法是 RRF。其基本思想是根据文档在两个检索列表中的排名而不是绝对得分来赋予最终权重。
- RRF 评分公式:
$$RRF(d) = \frac{1}{k + r_{\text{sparse}}(d)} + \frac{1}{k + r_{\text{dense}}(d)}$$
其中,$r(d)$ 为文档 $d$ 在相应列表中的排名(1-based),$k$ 是常数,通常取 60。
2. 为什么需要二阶段重排(Rerank)?
混合检索可以极大地拓宽“漏斗”,确保最相关的文档包含在召回的 Top-N(如 Top-50)结果中。然而,混合检索的第一阶段出于性能考虑,往往采用了双塔结构模型(双塔模型仅在最后计算向量内积,无法让查询词和文档词在深度注意力机制下充分交互)。
为了提高召回文档的准确率,我们需要引入**重排器(Reranker)**模型(单塔结构,如 Cross-Encoder)。
[ 用户查询 ]
│
├──────────────────────────┐
▼ ▼
[ 向量检索 (Top 50) ] [ 关键字检索 (Top 50) ]
│ │
└───────────┬──────────────┘
▼
[ 混合检索融合 ] (Top 50)
│
▼
[ Reranker 重排模型 ]
│
▼
[ 精准 Top 5 结果 ] -> 输入大模型 (LLM)
Reranker 模型的工作机制:
重排模型(例如 bge-reranker-large、Cohere Rerank)会把用户的 Query 和第一阶段召回的每个 Document 拼接在一起,作为一条长文本输入模型,计算其交叉注意力(Cross-Attention)。这种深度的字词级对齐能够精确判断两者的逻辑相关性,但由于计算开销大,只适合对小规模(如 Top 50)的数据进行计算。
3. 重排效果评测数据
在一项针对某电商客服知识库的评测中,对比了不同阶段检索的准确性(使用 NDCG@5 作为评估指标):
| 检索方案 | NDCG@5 (评估值,越高越好) | 平均耗时 (毫秒) | 适用场景特点 |
|---|---|---|---|
| 仅传统 BM25 | 0.62 | 2 ms | 纯规则、型号、精确短词匹配 |
| 仅向量语义检索 | 0.74 | 8 ms | 自然语言问答、模糊描述匹配 |
| 混合检索 (BM25 + Vector) | 0.81 | 12 ms | 综合性业务场景(最佳召回率范围) |
| 混合检索 + Rerank 重排 | 0.89 | 35 ms | 生产级 RAG,对生成内容准确度要求极高 |
NDCG(Normalized Discounted Cumulative Gain)是评估排序结果质量的常用指标。
4. 总结
在构建企业级智能问答或搜索系统时,不要迷信单一的向量相似度。通过**“混合检索保障召回宽度,Reranker 保障检索深度”**的双阶段检索架构,能够显著提升系统的整体智能表现,让大模型在最精确的知识基础上生成回答。
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。



暂无评论
还没有人评论过本文,快来发表你的高见吧!