核心要点

  • 能讲清 HNSW:基于多层可导航小世界图的 ANN,查询沿图贪心搜索,召回率高、查询延迟低,但内存占用大、构建慢

  • 能讲清 IVF:倒排文件,先把向量聚类成多个 cell,查询时只搜最近的 nprobe 个 cell,构建快、内存省,精度可调

  • 能说出关键调参:HNSW 看 M / efConstruction / efSearch;IVF 看 nlist / nprobe,并常配 PQ 压缩省内存

  • 能给选型判据:低延迟高召回选 HNSW;超大规模、内存敏感、可容忍调参选 IVF(+PQ)

标准回答

HNSW(图结构 ANN)(独占一行)

构建一个多层的可导航小世界图,上层稀疏用于快速跳转、底层稠密。查询时从顶层入口贪心地向最近邻逼近。优点是召回率高、查询延迟低且对参数较鲁棒;缺点是图要常驻内存、内存占用大,构建(插入)较慢。关键参数 M(每点连边数)、efConstruction(建图质量)、efSearch(查询时搜索宽度,越大越准越慢)。

IVF(倒排聚类)

先用 k-means 把向量空间划成 nlist 个簇(cell),每个向量归属一个簇。查询时只在距离最近的 nprobe 个簇中做精搜。构建快、内存占用低,精度由 nprobe 线性可调;常叠加 PQ(乘积量化)进一步压缩内存。缺点是 nprobe 太小会漏召回,需要按数据分布调参。

选型

追求低延迟、高召回且内存充足——选 HNSW(默认首选,如 向量数据库 中常用)。数据规模极大、内存/成本敏感、能接受调参与构建批处理——选 IVF 或 IVF+PQ。两者也可组合(如 HNSW 作为粗筛 + 精排)。

常见误区

⚠️ 常见踩坑

别说「HNSW 一定比 IVF 准」——HNSW 默认召回高但内存代价大;在十亿级、内存受限场景,IVF+PQ 往往是更现实的工程选择,精度可通过 nprobe 和重排补回。

追问

追问 1efSearch 和 nprobe 分别调大会怎样?

两者都是「用延迟换召回」的旋钮:efSearch(HNSW)增大搜索宽度、nprobe(IVF)增大扫描簇数,召回率上升、查询变慢。生产中按延迟预算二分调到满足召回阈值为止。

追问 2PQ 量化为什么能省内存,代价是什么?

PQ 把高维向量切成子段并用码本量化为字节码,内存可压缩到原来的几十分之一。代价是引入量化误差、召回略降,通常配合「PQ 粗筛 + 原始向量精排」找回精度。

追问 3数据频繁更新时哪种索引更友好?

HNSW 支持增量插入但删除需标记+定期重建,图维护成本高;IVF 在大量更新后簇分布漂移需重训聚类。高频更新场景常采用分段索引+后台重建,或选对增量更友好的实现。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Milvus

    云原生向量数据库,43,875+ stars。专为 AI 应用设计的分布式向量搜索引擎,支持千亿级向量检索,广泛应用于 RAG、推荐系统和相似性搜索场景

  • qdrant

    高性能向量数据库,6.3K+ stars。高性能、大规模向量数据库和向量搜索引擎,支持相似度检索和语义搜索