HNSW(分层可导航小世界)是一种基于图的算法,旨在高效搜索高维向量,常用于推荐系统、图像检索或自然语言处理等应用。它将数据组织成分层结构,每一层都是其下一层的子集,最底层包含所有数据点。在搜索查询向量时,HNSW 从顶层(节点最少)开始快速找到一个粗略的邻域,然后在较低层中逐步细化搜索。这种分层方法减少了所需的比较次数,使其比扫描整个数据集或依赖平面索引结构的方法更快。
HNSW 的受欢迎程度源于其速度、准确性和可扩展性的平衡。与精确的最近邻算法(对于大型数据集来说太慢)或更简单的近似方法(如局部敏感哈希 (LSH))不同,HNSW 在高效扩展的同时保持了较高的搜索准确性。例如,在包含数百万个 300 维词嵌入的数据集中,由于其分层图,HNSW 可以在对数时间内找到接近最佳的匹配项。这种效率来自“小世界”属性:每个节点都连接到几个附近的邻居和几个较远的邻居,从而在任意两个节点之间创建短路径。诸如 efConstruction
(控制图的构建彻底程度)和 efSearch
(调整搜索深度)之类的参数允许开发人员调整索引构建时间、搜索速度和召回率之间的权衡。与基于树的方法(例如,k-d 树)相比,HNSW 还可以更好地处理高维数据,后者在“维度灾难”中表现不佳,因为随着维度的增加,点之间的距离变得越来越没有意义。
开发人员经常选择 HNSW,因为它易于集成到现有系统中,并且只需最少的调整即可获得良好的性能。FAISS、Annoy 和 Vespa 等库实现了 HNSW,使团队无需从头开始构建基础设施即可添加向量搜索功能。例如,电子商务平台可以使用 HNSW,通过将用户查询向量(从浏览历史记录中获得)与产品嵌入相匹配,从而为实时产品推荐提供支持。同样,媒体公司可以使用它通过比较视觉特征向量来检索相似的图像。虽然 HNSW 比某些替代方案(例如,倒排索引)使用更多的内存,但其速度和可靠性使其成为延迟至关重要的应用程序的默认选择。该算法在各种数据集大小和维度上的稳健性,以及开源实现,巩固了其作为向量搜索首选解决方案的地位。