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 种动态缓存替换策略的缓存命中率基本
一致, 且搜索性能差距较小. 原因是此时缓存尚未触发替换操作, 缓存内容仍处于初始化状态. 当优先队列长度在

