Appearance
一句话总结:生产 RAG 不要只用纯向量检索——纯向量 Recall@10 约 62-78%,混合检索 + 重排可达 89-91%;HNSW 是默认索引,选库看规模。
选型(按规模与场景)
| 方案 | 定位 | 适用规模 | 典型场景 |
|---|---|---|---|
| Chroma | 极轻量(pip 即用) | 原型/小数据 | 本地 Demo、LangChain 快速集成 |
| pgvector | PostgreSQL 插件 | 百万级 | 已有 PG 栈、业务数据和向量同库 |
| Qdrant | Rust 高性能专用库 | 千万级 | 中规模生产、混合检索最好 |
| Milvus | 云原生分布式 | 亿级+ | 大规模高可用(需运维团队,etcd/MinIO) |
| FAISS | 内存索引库 | 单机 | 嵌入式、高吞吐单机检索 |
演进路线:Chroma 做 Demo → Qdrant/pgvector 进生产 → Milvus 上规模。
索引算法(ANN)
| 索引 | 原理 | 特性 | 适用 |
|---|---|---|---|
| FLAT | 暴力全扫 | 精确、慢 | 小数据 |
| IVF | 倒排聚类(nprobe 探测簇数) | 快、可调 | 大库、内存有限 |
| HNSW | 多层小世界图(M/efConstruction/efSearch) | 默认索引、log 复杂度、增量插入 | 大多数生产 |
| IVF-PQ / DiskANN | 量化压缩 / SSD 索引 | 显存小 | 十亿级 |
选型口诀:延迟敏感 → HNSW(调 ef);内存受限 → IVF+PQ 或 DiskANN;10 亿+ → DiskANN/PQ。 调参:Agent 漏检相关文档推理就会错,recall 目标 95%+;HNSW 调 M、efConstruction、efSearch。
混合检索(生产标配)
- BM25 强在:精确匹配——零件编号、法规条文、专有名词、版本号(纯向量对这些结构性失败)
- 向量强在:语义匹配——同义词泛化("汽车" vs "小轿车")、概念相似
- 两路并行 → 融合 →(可选)重排
- 融合用 RRF(Reciprocal Rank Fusion):RRF(d)=Σ 1/(k+rank),k 常取 60;无需调参、对分数尺度鲁棒——别用 MinMax 归一化
- 重排用交叉编码器(BGE-Reranker):两阶段 Recall@5 达 0.816
- 实测:RRF + BGE-Reranker 让 Recall@10 0.67 → 0.82(+22%)
检索评测指标
- Recall@k:正确答案是否在 top-k
- MRR:首个正确答案排名倒数均值
- 生产注意:Agent 检索漏检直接导致推理错误
面试要点
- 选型表:Chroma 原型 / pgvector 百万级 / Qdrant 千万级 / Milvus 亿级
- HNSW 是默认索引,调 M/ef/efConstruction;内存受限走 IVF-PQ/DiskANN
- 生产标配混合检索:BM25 + 向量互补,RRF 融合(k=60),交叉编码器重排
- 纯向量结构性短板:专有名词/编号/法规条文召回失败
- 评测指标 Recall@k / MRR;Agent 场景 recall 目标 95%+