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

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


                 了降低频繁合并造成的系统性能影响, 本文基于                FreshDiskANN  的架构和索引算法, 将其拓展为内存层、磁盘中
                 间层和磁盘基本层       3  层架构; 为了降低冗余查询的额外开销, 本文提出了搜索参数动态确定机制, 在层间以及层内
                 采用不同搜索参数; 为了减少合并操作删除阶段的                I/O  开销, 本文提出了磁盘重布局算法.
                    综上, 本文的主要贡献包括以下          3  点.
                    (1) 基于  LSM  思想的更新友好型磁盘向量索引框架. 在            FreshDiskANN  架构基础上, 引入磁盘中间层与刷新
                 操作, 有效降低合并操作频率, 同时将磁盘中间层作为缓冲区域, 提升了每次合并操作的数据量, 从而增加其中被
                 更新点的占比, 最终提高       I/O  利用率. 实验结果表明, 该方法最高能够增加          35.5%  查询吞吐量和    14.2%  更新吞吐量.
                    (2) 搜索参数动态确定机制. 在引入磁盘中间层后, 多层索引结构会带来查询路径冗余问题, 导致查询延迟增
                 加. 基于“所包含向量数据越多的磁盘索引包含最终结果的可能性越高”的启发式假设, 本文设计了层间动态搜索
                 参数策略. 进一步地, 结合      DiskANN  中磁盘索引的量化信息反映索引数据分布状况的特点, 本文定义了查询点与
                 磁盘索引的距离计算方法, 并基于该距离设计了层内动态搜索参数策略. 在查询时采用多种策略相结合以显著降
                 低查询延迟. 实验结果表明, 该机制平均提升查询              QPS (query per second) 达  65.86%.
                    (3) 面向合并操作删除阶段的重布局算法. 本文借鉴面向查询操作的向量索引磁盘重布局算法                             [26] , 并结合合并
                 操作删除阶段顺序读取特点, 优化向量索引点在磁盘上的物理排序, 使得原本需要二次顺序扫描的操作转化为“一
                 次顺序扫描+少量随机读取”, 最终大幅减少合并操作删除阶段的                    I/O  开销. 实验结果显示, 该方法平均可降低删除
                 阶段 41.36% 的  I/O  开销.
                    本文第   1  节介绍磁盘动态向量索引与         LSM  次级索引相关的研究背景. 第         2  节介绍所需的基础知识, 包括相
                 关概念的定义、量化压缩与          FreshDiskANN  架构等. 第  3  节介绍本文提出的基于      LSM  思想的更新友好型磁盘向
                 量索引框架及相关优化. 第        4  节通过对比实验与消融分析验证所提框架的有效性. 第                 5  节总结全文.
                  1   相关工作


                  1.1   向量索引算法
                    K  近似近邻搜索 (KANN) 是数据挖掘领域的经典问题, 近年来随着以检索增强生成 (RAG) 为代表的高维
                 向量检索需求的兴起, KANN        再次成为研究热点. 该领域近年已有多篇综述和基准测试研究                     [26−30] , 为理解该领域
                 发展脉络提供了良好基础. 从技术角度看, 向量索引算法主要分为两大类: (1) 基于图的算法: 将每个向量抽象为图
                 中的一个节点, 依据特定规则构建索引图             [5,7,8,31] , 查询阶段则借助剪枝策略  [6,32,33] 与图遍历方法  [34] 完成高效搜索;
                 (2) 基于分区的算法: 可进一步细分为基于树索引的算法                [12,35] 、基于哈希索引的算法    [10,36,37] 和基于倒排索引的算
                 法  [9,11,38] , 其核心关注以下  3  个问题: ① 如何划分分区; ② 查询时需访问哪些分区; ③ 如何在分区内执行高效搜索,
                 由此衍生出分区策略、导航策略与执行策略这                3  条研究路径.

                  1.2   磁盘向量索引
                    随着自然语言处理等领域中向量表示技术的发展, 为了保留更多原始模态的特征, 向量维度呈现数量级增长,
                                                                                                   [40]
                 从传统的几十维增长至如今常见的数百甚至上千维, 如                 DEEP 中的   96 维、GIST 中的   960 维、WIT-Image 中的
                                                               [39]
                                                                               [9]
                 2 048  维. 同时, 在现今互联网与物联网加持下, 向量数据规模也在呈现数量级增长, 比如                         YouTube8M  [15] 、
                       [9]                 [41]
                 SIFT1B 、Microsoft SPACEV-1B  等更多大规模向量数据集. 在多种因素影响下, 向量存储压力也随之倍增.
                    传统向量索引多为纯内存索引, 其假设索引结构和向量数据完全驻留在内存中, 但这一前提在大规模数据场
                 景下显然不现实. 因此, 近年来大量研究转向基于磁盘的向量索引技术                      [11,13,14,42,43] , 其中最具代表性的则是微软提
                 出的  SPANN [11] 和  DiskANN [13] . (1) SPANN  基于倒排索引, 将倒排列表持久化在磁盘上, 将中心点构建成内存导航
                 图, 并保证在少量倒排列表遍历下即可完成查询, 从而在保证查询准确性、查询延迟的同时显著节省内存开销. 其
                 结构简单, 构建速度快, 但为保证高召回率需进行数据冗余存储, 磁盘开销较大. (2) DiskANN                     基于图索引, 将原始
                 向量及邻接表存于磁盘, 仅将量化压缩编码与码表加载到内存中. 在查询时, 通过压缩码进行距离估算, 再结合贪
                 婪遍历策略逐步读取邻居信息与原始向量, 最终完成精排查询. 得益于图结构的高收敛性, 每次查询需访问的节点
   92   93   94   95   96   97   98   99   100   101   102