检索策略设计:向量、关键词和混合搜索
Source: Dev.to
Focus: 工程权衡、系统架构和实用默认设置
Audience: 熟悉嵌入的后端工程师,想要构建可靠、可控的搜索系统。
1. 检索策略在系统中的位置
一个典型的现代检索流水线如下所示:
flowchart TD
A[User Query] --> B[Query Rewrite / Intent Analysis]
B --> C[Multi‑Channel Retrieval
(Vector / Keyword / Metadata)]
C --> D[Hybrid Merge]
D --> E[Top‑K Limiting]
E --> F[Score Threshold Filtering]
F --> G[(Optional) Reranking]
G --> H[LLM Generation]
诸如 vector search(向量搜索)、hybrid search(混合搜索)、Top‑K(前 K)以及 threshold filtering(阈值过滤)等概念并非孤立的功能;它们在该流水线的召回与过滤阶段协同工作。
2. 向量搜索:语义召回层
2.1 向量搜索解决的问题
向量搜索解决 语义不匹配:
- 用户和文档使用的词语不同。
- 含义相似,但词汇重叠度低。
示例
Query: How to reduce dopamine addiction
Document: Attention control and dopamine regulation
关键词搜索在此失败,但嵌入向量能够成功。
2.2 工程师必须了解的核心参数
相似度度量
| 度量指标 | 典型用法 |
|---|---|
| 余弦相似度 | 行业默认(大多数嵌入模型在训练时假设使用余弦) |
| 点积 | 向量已进行 L2 正规化时常用 |
| L2 距离 | 适用于某些度量学习模型 |
索引类型(性能关键)
| 索引类型 | 使用场景 |
|---|---|
| Flat | 小规模数据集,最高精度 |
| HNSW | 通用,生产默认 |
| IVF | 超大规模数据集 |
对于大多数知识库和 RAG 系统,HNSW 在速度和召回之间提供了最佳的折衷。
2.3 向量搜索的根本弱点
- 召回能力强 – 检索 相关 内容。
- 精确度弱 – 可能返回 不相关但语义相近 的条目。
因此,向量搜索 必须结合 以下方式:
- Top‑K 限制
- 分数阈值
- (可选)重新排序
3. 关键字搜索 (BM25):精确层
关键字搜索 并未过时;它的作用是 确定性精确。它在以下方面表现出色:
- 代码和堆栈跟踪
- API 名称
- 错误信息
- 专有名词、数字和 ID
在许多技术查询中,关键字搜索优于嵌入向量。
一个关键优势是 可控性:确定性匹配可减少幻觉。
4. 混合搜索:行业标准
混合搜索结合了两种方法的优势:
- Vector search → 语义召回
- Keyword search → 词汇精确度
4.1 并行混合(最常见)
Vector Search Top‑K = 20
Keyword Search Top‑K = 20
↓
Merge Results
↓
Rerank
优势
- 实现简单
- 行为稳定
- 在生产环境中广泛使用
4.2 分数融合混合
一种加权评分方法:
Final Score = α × Vector Score + β × BM25 Score
适用于需要强全局排序的搜索引擎类系统。
5. Top‑K:召回边界,而非质量保证
误解: “Higher Top‑K means better results.” → 误解: “Top‑K 越高,结果越好。”
事实: Top‑K 定义了 最大召回范围。
- 大的 Top‑K → 更多噪声,更多 token 使用,更高延迟。
实用默认值
| 场景 | 推荐 Top‑K |
|---|---|
| FAQ | 3–5 |
| Technical Docs | 5–10 |
| Code Search | 10–20 |
典型 RAG 默认值
- Vector Top‑K:8–10
- Keyword Top‑K:8–10
6. Score Threshold Filtering: The Missing Safeguard
Top‑K 总是会返回结果——即使没有任何相关内容。阈值过滤可以解决这个问题:
Only keep results where score > threshold
未使用阈值的失败示例
Query: Apple phone
Result: Apple fruit
阈值指南(余弦相似度)
| Similarity | Interpretation |
|---|---|
| > 0.85 | 高度相关 |
| 0.75–0.85 | 可接受 |
6. Rerank Top 5
7. Send Top 3 to LLM
该流水线在召回率、精确度、成本和稳定性之间取得平衡。
8. 工程师真正应该关注的事项
8.1 召回率 vs. 精确率 的权衡
Vector Search → Recall
Keyword Search → Precision
Reranker → Final Quality
理解这三者之间的关系比调优任何单一参数都更重要。
8.2 Chunk 设计比算法更关键
不合理的分块会破坏所有检索策略:
- 块太长 → 嵌入稀释
- 块太短 → 上下文碎片化
优秀的检索从合适的块边界开始。
8.3 Top‑K 并非最终输出规模
典型的生产流程:
Retrieve 20 → Filter to 12 → Rerank to 5 → LLM consumes 3
结论
现代检索系统 不仅仅基于向量搜索。
混合检索 + 阈值过滤 + 重排序 才是可靠、可控的 AI‑增强生成的真正基础。
如果你以系统思维而非单一算法思维来设计检索,质量会显著提升。