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

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


                 300–600  之间时, LFU  与  FIFO  策略的缓存命中率基本持平. 这是由于        LFU  策略假设高频访问数据在未来仍具有
                 较高访问概率, 而     FIFO  则假设新加载数据更可能被再次访问. 在当前的搜索模式下, 查询过程中频繁访问的是新
                 近加载的数据, 导致早期加载的数据逐渐被淘汰, 两种策略在效果上趋于一致. 然而, 当优先队列长度继续增加至
                 700–2 000  时, LFU  策略的命中率与性能优势逐步显现. 原因在于, FIFO         仅依据加载时间做出替换决策, 容易淘汰
                 部分虽加载较早但仍具有较高访问频率的“历史热点”顶点, 进而降低了缓存利用效率. 而                           LFU  能够更准确地保留
                 频繁访问的关键顶点, 有效提升整体缓存命中率和搜索性能.
                        k 值的影响分析
                  6.5   不同
                    本节统计了     GoVector (即  GoVector-hybrid)、Starling  和  DiskANN  在不同  Top-k (k 取值为  10、100、500  和
                 1 000) 设置下, 在保证  99%  召回率前提下所达到的查询吞吐率 (QPS), 实验结果如图              12  所示. 实验结果如下.
                    当  k=10  时, GoVector 的  QPS  是  DiskANN  的  2.47–4.18  倍, 是  Starling  的  2.49–2.58  倍.
                    当  k=100  时, GoVector 的  QPS  是  DiskANN  的  3.69–4.03  倍, 是  Starling  的  2.18–3.46  倍.
                    当  k=500  时, GoVector 的  QPS  是  DiskANN  的  2.17–2.34  倍, 是  Starling  的  1.71–3.69  倍.
                    当  k=1000  时, GoVector 的  QPS  是  DiskANN  的  1.86–2.50  倍, 是  Starling  的  1.77–4.36  倍.

                        3 000                                    800
                                 GoVector  Starling  DiskANN              GoVector  Starling  DiskANN
                                                                 600
                                            200
                        2 000                                                       100
                       QPS                  100                QPS  400             50
                        1 000
                                                500  1 000
                                                                 200                    500  1 000
                           0                                      0
                                10     100     500    1 000            10      100     500    1 000
                                           Top-k                                  Top-k
                                         (a) DEEP                                (b) GIST
                                         图 12 召回率为    99%  时不同  k 值对应的   QPS  表现

                    上述结果充分说明, 无论在何种候选集大小设置下, GoVector 均展现出较高且稳定的查询性能, 在确保高召
                 回率的同时显著提升了系统的吞吐能力, 充分验证了                 GoVector 在多样化检索精度需求场景中的通用性和高效性.
                  7   总 结

                    本文针对基于磁盘的向量近似最近邻搜索 (ANNS) 问题, 提出了一种基于向量相似性的                          I/O  高效向量缓存策
                 略, GoVector. 该方法依据  ANNS  搜索过程的两个阶段设计了静态-动态相结合的混合缓存机制: 静态缓存部分预
                 加载入口顶点及其若干跳邻居, 用于加速初始阶段的近邻区域定位; 动态缓存部分在搜索过程中自适应地缓存候
                 选顶点及其在向量空间中相似的邻近顶点, 以提升相似向量搜索阶段的命中率. 此外, GoVector 还引入了基于向
                 量相似性的索引图重排序策略与自适应数据读取机制, 以增强缓存数据的空间局部性, 进一步提升查询吞吐率与
                 I/O  命中率. 实验结果表明, GoVector 在多个公开数据集上均显著优于当前主流的磁盘索引方法 (如                       DiskANN  与
                 Starling), 展现出良好的性能优势. 然而, 混合缓存机制中静态与动态缓存的容量比例依赖于人工经验设定, 难以在
                 不同查询负载和数据分布下实现最优配置. 在未来工作中, 我们计划引入查询感知与系统监测驱动的自适应缓存
                 调整策略, 以自动调节静态与动态缓存的比例, 进一步提升混合缓存机制的通用性与鲁棒性.

                 References
                  [1]   Asai A, Min S, Zhong ZX, Chen DQ. Retrieval-based language models and applications. In: Proc. of the 61st Annual Meeting of the
                     Association for Computational Linguistics, Vol. 6 (Tutorial Abstracts). Toronto: ACL, 2023. 41–46. [doi: 10.18653/v1/2023.acl-tutorials.6]
   66   67   68   69   70   71   72   73   74   75   76