HNSW 近邻检索HNSW approximate nearest-neighbor search

在 HNSW 图索引中先沿高层逼近目标,再在底层扩展候选近邻。

核心约束
候选集、已访问集合和保留结果必须与距离计算及终止条件一致。
适用问题
高召回率的近似向量检索。
边界与取舍
这是图索引上的检索过程;增加搜索宽度通常提高召回并增加成本,仍不保证精确最近邻。

时间与空间#

q 为本次距离计算次数,d 为向量维度,s 为队列操作数,H 为实际堆大小上限。

时间复杂度
稠密距离工作 O(qd)O(qd),堆维护约 O(slog⁡H)O(s\log H)
辅助空间
候选集、结果集和已访问标记;取决于实现

q、s 随数据分布、图构建和 efSearch 变化,不能对一般输入保证 O(log⁡n)O(\log n)。结果集的 efSearch 限制不一定也限制待扩展堆大小;已访问数组可能按全索引大小预分配,高召回率通常需要访问更多候选。

工程中的应用#

1 个案例 · 附源码
基础原理参考资料

Malkov & Yashunin · HNSW分层贪心搜索、候选扩展与近似搜索的参数。

Faiss 1.9 · HNSW search距离计算、候选队列与 visited 标记的实际路径。

3 个概念