Page 69 - 《软件学报》2026年第3期
P. 69
1032 软件学报 2026 年第 37 卷第 3 期
DiskANN Starling GoVector-dynamic GoVector-hybrid
1 500 1 500 1 500
1 000 1 000 1 000
QPS QPS QPS
500 500 500
0 0 0
99.0 99.5 100.0 85 90 95 100 85 90 95 100
召回率 (%) 召回率 (%) 召回率 (%)
(a) SIFT (b) Text2Img (c) DEEP
1 500 1 500 1 500
1 000 1 000 1 000
QPS QPS QPS
500 500 500
0 0 0
65 70 75 80 85 90 95 100 85 90 95 100
召回率 (%) 召回率 (%) 召回率 (%)
(d) Word2Vec (e) MSong (f) GIST
图 9 不同 ANNS 方法的召回率-QPS 性能对比
从实验结果可以看出, GoVector 在与其他 ANNS 方法的对比中展现出优异的搜索性能, 尤其在高召回率场
景下优势更为明显. 具体而言, 在召回率不低于 90% 的条件下, GoVector-hybrid 的 QPS 相比于 DiskANN 提升了
2.61–4.59 倍, 相比于 Starling 提升了 1.10–3.97 倍, 相比于 GoVector-dynamic 提升了 1.06–1.50 倍. 进一步观察可
知, 随着数据维度的提升, GoVector 依然保持了较高的搜索效率, 而 Starling 的性能接近于 DiskANN, 这得益于
GoVector 的高效混合缓存策略以及基于向量相似性的布局优化.
值得注意的是, 在少量低召回率场景 (如 Text2Img 和 DEEP 数据集) 中, Starling 的 QPS 略优于 GoVector. 这
是因为在该类场景下, 搜索的第 1 阶段占据了大部分耗时, 而 GoVector 所引入的动态缓存机制主要优化第 2 阶段
的访问效率, 因此其优势尚未充分发挥.
此外我们还发现, 在低召回率场景下, GoVector-dynamic 的搜索性能明显低于 GoVector-hybrid, 主要原因在
于 GoVector-hybrid 在第 1 阶段借助静态缓存预加载了入口顶点的多跳邻居, 有效提高了命中率, 显著减少了磁盘
I/O 访问次数, 从而提升了整体性能. 而在高召回率场景下, 随着搜索队列的拓展, 第 2 阶段成为主要瓶颈, 此时动
态缓存机制发挥主导作用, 因此 GoVector-dynamic 和 GoVector-hybrid 在该场景下表现接近.
6.3 静态动态缓存比例的分析
本节在 SIFT 和 GIST 两个公开数据集上评估了不同静态与动态缓存比例对搜索性能的影响, 针对多个召回
率目标进行了实验. 相关实验结果如图 10 所示. 基于实验数据分析, 可得出以下 3 个方面的结论.
① 合理的缓存配置对查询性能的提升. 实验结果表明, 当静态与动态缓存的比例为 2:8 (即动态缓存占比为
80%) 时, 在不同召回率下均能获得最优的搜索性能. 在 GoVector 中, 静态缓存主要负责加速第 1 阶段的搜索, 而
动态缓存主要优化第 2 阶段的数据访问. 当动态缓存占比超过 80% 时, 静态缓存所占容量的减少使其无法充分缓
存入口点及其多跳高频邻居, 导致搜索初期难以及时命中相关数据, 第 1 阶段的查询耗时上升. 尽管动态缓存对
第 2 阶段依然有效, 但整体查询流程中第 1 阶段效率下降从而拉低了整体的 QPS. 这表明, 采用合理的缓存配置可

