核心原则
先用 Flat 或高召回 HNSW 建质量基线,再优化延迟和内存。
量化必须在回答质量评测后启用,不能只看向量召回。
租户、ACL、来源、时间和文档状态必须作为过滤元数据,避免越权和旧文档污染。
索引构建要支持增量更新、快照、回滚和重建任务观测。
混合索引应统一 dense、sparse 和 metadata 的版本,防止融合结果不可解释。
方法对比
| 方法 | 延迟 | 成本 | 最适合 |
|---|---|---|---|
| Flat | 规模大时慢 | 高 | 评测基线、小语料 |
| HNSW | 快 | 高 | 高召回交互式搜索 |
| IVF-PQ | 很快 | 中 | 内存压力大的大语料 |
| 混合存储 | 中 | 高 | 带过滤的企业搜索 |
大厂与框架实践
FAISS 让 HNSW、IVF、PQ 等 ANN 索引成为大规模向量检索常用基座。
Milvus、Qdrant、Weaviate 和 pgvector 提供生产化 HNSW 索引与过滤能力。
字节、阿里类知识库通常组合向量索引、元数据过滤和重排序。
多租户 SaaS 必须先过滤 ACL 再检索或在检索阶段强制携带 tenant_id。
高频更新知识库要用增量索引队列,避免全量重建影响在线服务。
关键论文与参考
FAISS,Johnson 等,2017
HNSW,Malkov 与 Yashunin,2018
Product Quantization,Jegou 等,2011
ScaNN,Guo 等,2020
DiskANN,Subramanya 等,2019
深度讲解
索引选择可以用 memory = N * dimension * bytes 估算。1000 万条 1536 维 float32 向量原始大小约 61GB,还未计算图结构和元数据;PQ 可显著压缩,但可能损失难例召回。HNSW 的 M 和 efSearch 会影响质量与延迟,efSearch 从 64 提到 256 可能让 Recall@10 增加 2-5 点,同时 p95 延迟翻倍。生产建议保留 shadow index,把新索引接入 5% 查询做对照,再切主流量。
最佳实践
索引快照必须可回滚。
把 ACL 和 freshness 作为强过滤条件。
索引参数变更要和评测报告一起发布。