HNSW算法简述
HNSW是Hierarchical Navigable Small Worlds的缩写,其是一种基于图的数据结构,通过构建多层图从而实现高效的相似性搜索。其相关论文可以参考。
HNSW通过将数据组织成层次结构,每一层都包含由边连接的节点。顶层较为稀疏,可以在图中进行大范围的跳转。而下层密度增加,提供更多细节和近邻之间的连接。
检索时从最高层的入口节点开始,每一步都向更近的邻近节点前进,逐层进行下降,利用每一层进行从粗到细的探索,直到到达可能找到相似节点的最底层。而添加新节点时,算法会根据概率确定其入口层,并使用邻居选择启发式将其连接到附近的节点。
而HNSWlib是实现HNSW算法的流行库,它允许在图层之间快速跳转,并优化高密度、高维数据的搜索,从而实现亚线性时间复杂度。另外在PostgreSQL的pg_embedding扩展也是基于该算法的,更多内容可以参考。
参考文章: