Files
nexus/wiki/concepts/Hybrid-Search.md
2026-04-23 00:02:55 +08:00

52 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Hybrid Search"
type: concept
tags: [search, vector, bm25, retrieval]
sources: [semantic-memory-search, knowledge-base-rag]
last_updated: 2026-04-22
---
## Definition
混合搜索结合两种或多种检索策略——通常是稠密向量检索语义相似性和稀疏关键词检索BM25——通过排名融合算法合并结果兼顾语义理解和精确匹配。是当前 RAG 系统提升召回率的主流方法。
## How It Works
```
查询 → [向量检索ANN] ─┐
→ [BM25 关键词检索] ──┼─→ Reciprocal Rank Fusion (RRF) → 融合排名结果
→ [其他检索器] ──────┘
```
1. **向量检索**Embedding 模型将查询编码为向量,通过 ANN 索引(如 HNSW找到语义相近的文档块
2. **BM25 检索**:传统关键词检索,统计词频和文档频率,返回字面匹配的文档块
3. **RRF 融合**:对各检索器的排名结果按 `1/(k+rank)` 公式融合k 为平滑参数(通常 k=60
## Why Not Pure Vector Search?
纯向量搜索的局限性:
- **同义词覆盖不足**Embedding 空间无法覆盖所有同义词(如"缓存"vs"cache"
- **专有名词精度低**:罕见词/新词/数字类实体的向量表示不够精确
- **计算成本高**:向量检索的计算量随向量维度增长
混合搜索通过 BM25 补充关键词精确匹配,同时保留向量搜索的语义理解能力。
## Key Insight
> "Hybrid search beats pure vector search. Combining semantic similarity (dense vectors) with keyword matching (BM25) via Reciprocal Rank Fusion catches both meaning-based and exact-match queries." — memsearch 文档
## Implementation
| 组件 | 说明 |
|------|------|
| 向量检索器 | Milvus / Pinecone / FAISS / Qdrant |
| BM25 | Elasticsearch / OpenSearch / rank_bm25 |
| RRF 融合 | 自实现或向量数据库内置 |
| Embedding | OpenAI text-embedding-3 / BGE / Sentence-BERT |
## Connections
- [[semantic-memory-search]] — memsearch 使用混合搜索策略
- [[Knowledge-Base-RAG]] — 混合搜索是知识库 RAG 提升召回率的关键
- [[Semantic-Search]] — 混合搜索是纯语义搜索的增强版
- [[Reciprocal Rank Fusion]] — 混合搜索的融合算法