Page 23 - 《软件学报》2026年第3期
P. 23
986 软件学报 2026 年第 37 卷第 3 期
表 5 向量搜索优化方法总览和对比展示 (续)
分类维度 核心思想 典型方法 优势 局限性
面向内存硬盘混 优化磁盘访问的I/O效率 DiskANN [36] 、 利用硬盘降低成本, 较慢的磁盘IO影响搜索性能
合场景的优化 SPANN [107] 等 提升单机处理能力
面向数据访问的 重组数据结构提升局部性, QG-LVQ [35] 、 提 升 缓 存 命 中 率, 对算法设计要求高, 空间换
优化 充分利用缓存 SymphonyQG [108] 等 减少传输带宽压力 时间带来额外的内存占用
网络通信成为瓶颈, 任务调
[109]
面向分布式场景 分布式并行处理与负载均 Pyramid 、 横 向 扩 展 能 力 强, 度复杂性高, 增加算法设计
的优化 衡 Auncel [110] 等 处理超大规模数据
和维护的复杂性
[111]
Filtered-DiskANN 、 满足负载业务逻辑, 支持场景复杂性增加导致查
面向混合查询场 支持高效向量+结构化数据 ACORN [112] 、 为应用提供更多样 询优化器设计复杂, 高效索
景的优化 混合查询 [113]
SeRF 等 支撑 引设计困难
最坏情况分析 [114] 、
用数学模型证明复杂度边 [115] 指导算法设计, 提 理论假设偏离系统数据实际
理论分析 LID 、Steiner-
界和性能极限 [116] 供性能保证 情况
hardness
3.1 面向硬件加速的优化
3.1.1 利用 SIMD 加速距离计算
单指令多数据流 (single instruction multiple data, SIMD) 技术通过一条指令同时处理多个数, 显著提升计算密
集型任务的性能. 现代 CPU 往往支持 SIMD 操作, 比如 x86 架构的 AVX/AVX2/AVX512 指令集 [117] 和 ARM 架构
的 NEON [118] .
利用 128 位 SIMD 寄存器加速计算向量 x 与向量 y 的欧氏距离的平方的一种方案如图 6 所示. 其中, 第①与
第②步分别将 4 个元素从内存加载到 SIMD 寄存器中. 第③步通过 sub 指令计算得到 z = x−y. 第④步利用 fmadd
res i = res i +z i ·z i . 第⑤步与第⑥步通过执行两次 hadd_ps 指令将 result 寄存器中的值求和并保存在首个
指令实现
元素中. 第 7 步通过 cvtss 指令提取寄存器中的首个元素, 得到计算结果.
vec x reg x reg temp reg result
a
x 1 x 1 z 1
distance
x 2 ① load x 2 ③ sub z 2 ④ fmadd b
dis
c
x 3 x 3 z 3
d
x 4 x 4 z 4
⑦ cvtss
⑤ hadd
vec y reg y
a+b
a+b
y 1 y 1
+c+d
y 2 ② load y 2 c+d ⑥ hadd 0
0 0
y 3 y 3
0 0
y 4 y 4
reg result reg result
图 6 SIMD 计算距离示例图
[1]
通过 SIMD 来加速向量计算已经广泛地用于向量搜索中, Milvus 等向量数据库以及 Faiss [29] 等算法库利用
了 SIMD 优化近似最近邻查询. Faiss 从 3 个层次利用了 SIMD: (1) 对于较为简单的操作 (比如对两个向量求和),
在代码实现时会通过较为紧凑的循环或使用某些关键字使得编译器能够自行实现向量化 (auto-vectorization);
(2) 利用通过 C++编译器扩展实现的 SIMD 变量和指令; (3) 通过优化数据布局与算法设计来更好地利用 SIMD.
Milvus 针对 SIMD 主要做了两个工程优化: (1) 支持 AVX512 指令集; (2) 为不同架构的 CPU 自动识别并选择对应
的 SIMD 指令.
表 6 展示了进行 Top20 查询获得 96% 和 98% 召回率时, 在 Intel(R) Xeon(R) Silver 4210R CPU @ 2.40 GHz

