摘要:基于图结构的高维向量索引(索引图)因其高效的近似最近邻搜索能力,已成为大规模向量检索的主流方法.索引图执行近似最近邻搜索(ANNS)的过程分为两个阶段:第一阶段从入口点出发快速定位到查询向量附近区域;第二阶段在查询向量附近搜索离其最近的k个向量.然而,由于索引图需存储大量邻接关系,导致内存开销大,因此实际部署时通常需将其存储于外存.当执行近似最近邻搜索时,按需加载索引图和向量数据会导致频繁发生I/O操作,并成为检索性能的主要瓶颈(I/O时间占90%以上).现有系统利用入口点及其附近邻居被高频访问的特性,采用静态缓存策将入口点及其若干跳邻居预先缓存在内存中,以减少第一阶段的I/O访问.然而,本文分析发现,第二阶段为获取更高精度的检索结果,需访问大量与查询向量相关的图顶点,成为I/O开销的主要来源.由于第二阶段的访问顶点随查询向量而动态变化,现有静态缓存策略难以有效命中,导致其在此阶段几乎失效.针对此问题,本文设计了一个静态-动态混合缓存策略GoVector,其核心设计体现在:(1)静态缓存区预加载入口点及其高频近邻;(2)动态缓存区自适应地缓存第二阶段中空间局部性高的顶点.为了进一步适配第二阶段中以向量相似性为导向的搜索过程,设计了基于向量空间相似性磁盘布局策略,通过重排顶点存储顺序,使相似向量在物理存储上聚集于相同或相邻磁盘页,从而显著提升数据访问的局部性.这种双重优化机制使得缓存命中率得到显著提升,有效降低了整体I/O开销.在多个公开数据集上的实验表明,在召回率为90%时,相较于当前最先进的基于磁盘的索引图系统,GoVector实现I/O次数平均降低46%、查询吞吐率提升1.73倍、延迟下降42%.