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

邱海浪 等: LSMDiskANN: 更新友好型磁盘向量索引框架                                                1071


                 化: (1) Starling  在磁盘布局算法中的最小单元是块       (block), 而本文的合并操作中, 每次是从磁盘索引顺序读取一批
                 块, 所以本算法的最小单元是缓冲区           (buffer); (2) Starling  中的优化目标是点   P 1  与邻居  P 2  需要位于同一个最小单
                 元上, 而因为合并操作中顺序读取带来的先后顺序, 所以本算法的优化目标可以放松为                            P 2  存在于与  P 1  相同或者
                 之前的最小单元上.

                                     2  P 2  3
                              1     P 1     P 1     4
                             P 1                   P 1
                               邻      邻 邻  邻      邻                     邻      邻 邻  邻      邻
                               接      接 接  接      接                     接      接 接  接      接
                               表      表 表  表      表       重布局操作         表      表 表  表      表
                               向      向 向  向      向                     向      向 向  向      向
                               量      量 量  量      量                     量      量 量  量      量
                               ①      ② ③  ④       ⑤                    ①      ② ③  ④      ⑤
                                              扫描顺序                                     扫描顺序
                                    (a) 重布局操作前                              (b) 重布局操作后
                                                   图 9 重布局操作示意图

                    为了量化这一目标, 本文给出如下定义.
                    定义  5 (磁盘索引布局). 给定一个磁盘索引         I, 其向量索引数据在磁盘上的排列顺序称为磁盘索引布局.
                    定义  6 (松弛化重叠比例). 点     p 的松弛化重叠比例为其入边邻居在当前及后续缓冲区中出现的比例, 假设整个
                 磁盘索引数据在一次全量顺序扫描中分为               0  至  n–1  共  n 段缓冲区进行读取, 给定一个点  ,                 p 在
                                                                                      p BufIdx(p) 表示点
                 第几个缓冲区,     Buf (i) 表示第  i 个缓冲区中的点集合,    IN (p) 表示点  p 的入边邻居集合, 从而有如下计算公式衡量
                   p 的松弛化重叠比例 (relaxed overlap ratio, ROR):
                 点

                                                          n−1
                                                         ∑
                                                             |Buf (i)∩IN (p)|
                                                        i=BufIdx(p)
                                                ROR(p) =                                              (4)
                                                              |IN (p)|
                    定义                                                                  ROR(P), 其中:
                        7 (磁盘索引重布局). 给定一种磁盘索引布局            P, 磁盘索引重布局的目标则是最大化
                                                            ∑
                                                               ROR(p)
                                                             p∈P
                                                    ROR(P) =                                          (5)
                                                               |P|
                    基于上述目标, 本文设计了         3  种磁盘索引重布局算法: 第      1  种是最直接的基于入度的重排序算法, 第            2  种是基
                 于贪心的朴素算法, 第      3  种是基于邻居频率启发式的收敛优化算法.
                    (1) 分配算法   A: 基于入度的排序分配算法
                    因为每个点的出度是一致且预先设定的值, 而入度则因为剪枝规则的存在而大相径庭. 将入度大的点排列在
                 前面从直观上更容易提高其入边邻居出现在之后缓冲区的概率, 从而提升松弛化重叠比例. 因此, 不妨考虑按照每
                 个点的邻接入边数       (即入度) 进行降序排序, 并按照该顺序进行索引重布局.
                    (2) 分配算法   B: 基于贪心的朴素分配算法
                    在分配算法     A  的布局基础上, 本文进一步提出基于贪心的朴素分配算法, 期望在尽量不破坏分配算法                          A  的先
                 后顺序基础上, 进一步加强松弛化条件. 具体流程如算法                 6  所示: 按照分配算法    A  中的排序顺序访问所有点, 当访
                 问点   p 2  时, 该算法将  p 2  尽可能地分配到原本的分区     (第  5–8  行), 并将其入边邻居  p 1  贪心地分配到原本的分区和
                 p 2  的分区中的下标较大值分区       (第  9–14  行).

                 算法  6. 基于贪心的朴素分配算法.
                 输入: 图G = (V,IN (V));
                 输出: 新磁盘索引布局P.
   103   104   105   106   107   108   109   110   111   112   113