Page 125 - 《软件学报》2026年第3期
P. 125

1088                                                       软件学报  2026  年第  37  卷第  3  期


                 分布的随机变量进行采样而生成: 令            u  为一个服从标准均匀分布的随机变量, 即            u~U (0,1), 最大层数  l ma 的计算
                                                                                                  x
                 方式为:

                                                      l max = ⌊−lnu·mL⌋                               (2)
                    在公式   (2) 中, ⌊·⌋表示向下取整函数, 参数      mL  是控制层数分布的归一化因子, 通常取           mL = 1/lnM, 其中, M  为
                 各节点可连接的最大邻居数. 这种概率分配机制确保了绝大多数节点仅存在于底层, 而只有极少数节点能被选入
                 高层网络. 该多层设计使得搜索可以从顶层稀疏图的高效导航开始, 逐步深入至底层稠密图进行精确查找, 从而将
                 搜索复杂度由线性级别        O(N) 成功降低至对数级别       O(logN).

                                               level 2





                                               level 1




                                               level 0





                                                  图 2 HNSW  索引查询过程

                    ● HNSW  的启发式邻居选择规则. 为了保证图的导航质量, 尤其是在节点分布不均的区域, HNSW                          设计了一
                 种启发式邻居选择规则. 该规则的核心思想在于最大化所选邻居集的空间覆盖多样性, 而不是仅追求距离上的绝
                 对最近. 如图   3  所示, 其算法流程如下: 在为待插入节点          v 从一个候选邻居集      C  中筛选最终邻居时, 算法首先会判
                 断  C  的基数|C|. 只有当|C|大于预设的节点最大邻居数时, 才实施启发式剪枝机制, 否则无须剪枝. 此时, 算法将迭
                 代地构建一个结果集        R. 在每一轮迭代中, 算法从      C  中选取当前距离     v 最近的节点并将其加入        R. 随后, 算法将对
                 C  中剩余的候选节点应用剪枝规则: 对于           C  中任何一个候选节点       v', 若存在结果集    R  中的已选邻居    v i , 使得其与
                            ′
                                                           ′
                 v i 的距离  dist(v ,v i ) 以及其与待插入节点  v 的距离  dist(v ,v) 满足:

                                                         ′
                                                                  ′
                                                     dist(v ,v i ) > dist(v ,v)                       (3)
                    在公式   (3) 中, 当公式不成立时, v'被视为一个冗余的候选邻居, 算法将其从                C  中移除. 此过程反复进行, 直至
                 结果集   R  的大小达到最大邻居数上限且满足提前终止条件.

                                                                                    v
                                              连接长边
                                                                         v 1
                                            避免形成孤岛
                                                                                          v′
                                                                                   v 2
                                                                                       候选节点
                                          (a) ෬ႄ֥ܛི֛ႋ                       (b) ఓؿൔࡧᆥܿᄵ
                                                 图 3 保证图索引质量的关键

                    此规则在选择邻居时考虑区域覆盖 (不同邻居有一定的方向和范围辐射), 避免在局部区域出现大量冗余连
                 接, 从而保证图高效与高质量的探索能力. 然而, 也正是因为这一规则, 在面临批量插入相似数据场景时, 可能会因
   120   121   122   123   124   125   126   127   128   129   130