Page 128 - 《软件学报》2026年第3期
P. 128
王可 等: 面向批量更新的向量索引召回率优化 1091
0.99
Batch-100 Batch-150 Batch-200
0.97
0.95
召回率 0.93
0.91
0.89
0.87
0.85
1 000 2 000 3 000 4 000 5 000
(1%) (2%) (3%) (4%) (5%)
相似向量数量
图 4 GIST1M 数据集上的平均召回率 (M=24, efC=64)
● 索引参数的敏感度分析. 实验揭示了索引构建参数对召回率退化的敏感性.
(1) 查询深度参数 efSearch. 增大 efSearch 可通过扩展搜索广度提升召回率. 例如, 在图 4 的相似数据占比为
2% 时, 将 efSearch 从 100 提升至 200, 召回率提升约 2%. 然而, 即便采用较高的 efSearch 值, 负载为相似数据占比
为 1% 与 5% 时, 召回率的差距仍然十分显著. 这一结果表明, HNSW 召回率的性能损失与索引结构紧密相关, 无
法仅通过增加查询时的搜索深度来弥补.
(2) 索引构建参数 M 与 efConstruction. 增大 M 与 efConstruction 可构建更高连通密度的图结构, 这会显著提
升索引的鲁棒性, 并减弱性能衰减现象. 同时, 更大的 M 与 efConstruction 会增加邻居搜索的广度, 提高邻居质量,
但也会增加构建的开销.
我们在 MSong 与 Enron 数据集上进行了相同的实验. 实验结果如图 5 所示, MSong 的召回率出现平滑下降的
趋势. 在 efSearch 为 100 时, 查询召回率从 0.95 (相似数据占比为 1%) 骤降至 0.7 (相似数据占比为 5%), 下降幅度
接近 15%. 其召回率变化趋势与 GIST1M 相同, 并且下降效果更为明显; 而在维度更高且结构复杂的 Enron 数据
集上, 在相似数据占比从 1% 提升到 5% 的过程中, 召回率虽然出现了波动, 我们分析了单条查询的明细数据, 发
现存在部分查询向量其召回率值与平均召回率的偏差较大, 但整体趋势仍为下降. 在 efSearch 为 200 时, 召回率下
降的幅度最大, 超过 6%.
1.00 0.95
Batch-100 Batch-150 Batch-200 0.94 Batch-100 Batch-150 Batch-200
0.95
0.93
0.90 0.92
召回率 0.85 召回率 0.90
0.91
0.80 0.89
0.88
0.75 0.87
0.86
0.70 0.85
1 000 2 000 3 000 4 000 5 000 900 1 800 2 700 3 600 4 500
(1%) (2%) (3%) (4%) (5%) (1%) (2%) (3%) (4%) (5%)
相似向量数量 相似向量数量
(a) MSong召回率变化 (M=48, efC=100) (b) Enron召回率变化 (M=24, efC=64)
图 5 不同相似数据占比下, 平均召回率下降现象
以上 3 组实验的结果都展现出召回率下降的问题, 也证实了该召回率退化是 HNSW 应对批量相似数据写入
的内在结构性缺陷, 而非特定数据分布的偶然现象.
在批量插入相似数据的场景中, 实验中出现了 HNSW 索引召回率显著下降的现象, 但该现象背后的微观结
构演化机制尚未明确. 基于此, 第 2.3 节将深入拓扑层面精细分析索引结构的演变, 进一步探究索引召回率退化的
原因.
2.3 相似数据邻居数量的动态变化
● 相似数据邻居数. 该指标通过观测索引的微观拓扑, 量化图的局部连通性. 其定义如下: 对于批量插入相似

