一句话总结:Hybrid Search(混合检索)= 向量检索(语义相似)+ BM25 关键词检索(精确匹配),通过加权融合解决纯向量检索对专业术语、产品型号、法规编号召回不足的问题。
为什么纯向量检索不够用?
向量检索擅长语义理解(「年假怎么算」≈「带薪休假天数规则」),但在以下场景表现差:
- 精确术语匹配(产品型号
XJ-2000Pro) - 法规编号(「民法典第 577 条」)
- 英文缩写(
API、SLA、GDPR) - 数字与日期(「2024Q3 财报」)
BM25 关键词检索恰好弥补这些短板。
融合公式
最终分数 = α × 向量相似度 + (1-α) × BM25 归一化分数
- α = 0.5~0.7:通用企业知识库(泽衍科技默认 α=0.6)
- α = 0.3~0.5:法规、产品手册等精确匹配场景
- α = 0.7~0.9:口语化 FAQ、培训材料
完整检索流水线
用户 Query
↓ Query Rewrite(口语 → 标准检索词)
Hybrid Search(向量 Top-20 + BM25 Top-20 → 合并去重)
↓ Cross-Encoder Reranker
Top-5 文档片段 → LLM 生成答案
实测效果(泽衍科技客户案例)
| 场景 | 纯向量 Top-5 准确率 | Hybrid + Reranker |
|---|---|---|
| 制造业产品手册 | 58% | 91% |
| 金融合规文档 | 51% | 88% |
| 通用 HR 制度 | 72% | 94% |
常见问题
Hybrid Search 会增加延迟吗? BM25 检索通常在 10~50ms,整体延迟增加可忽略。瓶颈在 Reranker(200~500ms)和 LLM 生成。
需要额外部署 Elasticsearch 吗? 不一定。pgvector + pg_bm25、Qdrant 内置 sparse vector、Milvus 2.4+ 均支持混合检索,可简化架构。
α 值如何确定? 建议准备 50~100 条标注 query,A/B 测试 α 从 0.3 到 0.9,选准确率最高的值。