混合搜索(Hybrid Search)
把 向量语义检索(dense)+ 关键词检索(sparse,BM25)+ 元数据过滤 三路融合,弥补纯向量"漏关键字" / 纯关键字"漏语义" 的短板 — 现代 RAG 的工程默认配置。
为什么需要混合
| 单一方案 | 弱点 |
|---|---|
| 纯向量(dense) | 漏字面命中(人名、产品名、SKU、错别字) |
| 纯关键词(BM25) | 漏语义近似("小猫" 找不到 "kitten") |
| 元数据过滤 | 不能做相关性排序 |
混合搜索 = 三者融合 → 召回率 +10-30%、回答质量显著提升。
融合方法
| 方法 | 描述 | 优劣 |
|---|---|---|
| RRF(Reciprocal Rank Fusion) | 按多路结果的排名倒数相加 | 实现简单、不需调参,工业最常用 |
| Linear Combination | α × dense_score + (1-α) × sparse_score | 需调权重 |
| CrossEncoder Rerank | 取并集后用 cross-encoder 重排 | 效果最好、延迟+成本最高 |
| Learned Sparse(如 SPLADE) | 用 LLM 生成稀疏向量 | 兼顾语义+关键字 |
工业实现
- Weaviate:原生支持 Hybrid 查询 API(dense + BM25 + RRF),是其差异化卖点
- Elasticsearch 8.x:dense_vector + BM25 + RRF
- Milvus 2.4+:Hybrid Search API
- Pinecone:Sparse-Dense 混合(用 SPLADE 等)
- Qdrant:Hybrid Search via Query API
在 RAG 中的角色
RAG 工程化最佳实践的"标配":
- 查询 → 同时发往向量索引 + BM25 索引
- 两路 Top-K 用 RRF 融合
- 可选 + CrossEncoder Rerank(如 Cohere Rerank、BGE-Reranker)
- Top-N 喂给 LLM 生成答案
演进
- 2022 纯向量 RAG 时代,依赖 dense embedding
- 2023 业界发现纯向量"漏关键字"严重 → 混合搜索回归
- 2024 Weaviate / Elasticsearch / Pinecone 官方推 Hybrid
- 2025 多模态向量 加入混合融合(文+图+音)
相关
∈ belongs_to::3-07-AI原生中间件与开发平台