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

周依杰 等: GoVector: I/O-高效的高维向量近邻查询缓存策略                                            1033


                 以在性能与资源利用之间达到良好的平衡.
                    ② 动态缓存的性能提升作用. 在相同召回率条件下, 引入少量动态缓存即可显著提升系统的整体搜索性能.
                 例如, 在  SIFT  数据集中, 动态缓存占比从      0%  提升至  10%  时, 系统性能提升了    1.31–5.04  倍. 这充分说明了动态缓
                 存机制在识别访问热点、适应搜索路径变化方面的高效性.
                    ③ 动态缓存的稳定性与鲁棒性. 进一步分析发现, 在不同召回率水平下, 动态缓存的性能变化趋势保持一致,
                 表现出良好的稳定性. 此外, 在任意非零动态缓存占比的设置下, 系统的搜索性能均优于完全静态缓存 (即动态缓
                 存占比为   0%), 这说明动态缓存机制在多种检索精度需求下都具备较强的通用性和适应性.

                         1 500                                  1 200



                         1 000                                   800
                        QPS                                     QPS

                          500                                    400
                                                   Recall=95%                           Recall=95%
                                                   Recall=99%
                                                                                        Recall=99%
                                                   Recall=99.9%                         Recall=99.9%
                           0                                      0
                               0    20   40    60   80   100          0    20   40   60    80  100
                                     动态缓存所占比例 (%)                           动态缓存所占比例 (%)
                                          (a) SIFT                               (b) GIST
                                           图 10 不同静态动态缓存比例下的搜索性能

                  6.4   不同缓存替换策略的影响分析
                    为了探索适用于动态缓存的最优替换策略, 本文在                 SIFT  数据集上分别评估了     3  种常见策略的性能表现: 最不
                 经常使用 (LFU)、先进先出 (FIFO) 和随机替换 (Random). 图        11(a) 展示了在不同召回率设定下, 3       种替换策略对
                 应的搜索性能表现. 实验结果表明, LFU          策略在整体性能上表现最佳.

                        1 400                                     60
                                                                       LFU   FIFO   Random   DiskANN
                        1 200
                        1 000                                     40
                       QPS  800                                  缓存命中率 (%)
                         600
                                  LFU                             20
                         400
                                  FIFO
                         200      Random
                                                                   0
                           98.5      99.0       99.5      100.0       250  300  400  500  600  700 1 000 2 000
                                        召回率 (%)                                 优先队列长度
                                 (a) 不同缓存替换策略的搜索性能                       (b) 不同缓存替换策略的缓存命中率
                                                图 11 不同缓存替换策略的表现

                    图  11(b) 进一步展示了在不同优先队列长度下各替换策略的缓存命中率. 首先, 随着优先队列长度的增加, GoVector
                 动态缓存的命中率始终显著优于           DiskANN  所采用的静态缓存策略. 这一现象说明, 动态缓存机制能够更有效地适
                 应查询过程中的访问局部性变化, 及时捕捉潜在热顶点, 从而显著减少磁盘                        I/O  操作, 提升整体搜索性能. 相比之
                 下, DiskANN  使用的静态缓存为固定顶点集合, 无法随查询路径的动态变化进行内容调整, 限制了其缓存命中率
                 和系统效率的进一步提升. 进一步分析表明, 当优先队列长度为                   250  时, 3  种动态缓存替换策略的缓存命中率基本
                 一致, 且搜索性能差距较小. 原因是此时缓存尚未触发替换操作, 缓存内容仍处于初始化状态. 当优先队列长度在
   65   66   67   68   69   70   71   72   73   74   75