HNSW (分层可导航小世界) 是一种用于高效搜索高维数据的数据结构,特别适用于近似最近邻 (ANN) 搜索。 它解决了在大型数据集中快速查找“接近”查询点的项目这一难题,而使用蛮力比较等传统方法在计算上成本高昂。 HNSW 结合了基于图的技术和分层结构,以平衡搜索速度和准确性,使其广泛应用于推荐系统、图像检索和自然语言处理等应用中。
HNSW 的结构由多层图组成,顶层最稀疏(节点之间的连接最少),而下层密度增加。 在搜索期间,算法从顶层开始,快速缩小候选邻居的范围,然后通过移动到下面的更密集层来细化结果。 与平面图相比,这种分层方法减少了所需的比较次数。 例如,在包含 1000 万张图像的数据集中,HNSW 可能会遍历每层 5-10 个节点,而不是数千个节点,从而显着加快查询速度。 诸如 ef
(动态候选列表的大小)和 M
(每个节点的最大连接数)之类的关键参数允许开发人员调整搜索速度和召回准确率之间的权衡。
HNSW 适用于实际系统,因为它支持动态更新——可以在不重建整个结构的情况下插入新的数据点。 FAISS 和 Annoy 等库实现了 HNSW,从而可以与机器学习管道集成。 例如,即使有数百万首曲目,音乐推荐服务也可以使用 HNSW 在毫秒内将用户嵌入与歌曲向量匹配。 但是,内存使用量可能高于基于树的 ANN 方法,并且参数调整需要实验。 尽管存在这些权衡,但 HNSW 仍然是生产环境中可扩展、高性能相似性搜索的首选。