Page 31 - 《软件学报》2026年第3期
P. 31
994 软件学报 2026 年第 37 卷第 3 期
的方案, 当前有许多方法探索如何利用分布式场景来实现高效的近似最近邻搜索.
(1) 基于算法框架的分布式优化
Pyramid [109] 是一个基于 HNSW 的分布式搜索框架. 它支持欧氏距离、余弦相似度和最大内积搜索. 它通过采
样数据构建 meta-HNSW, 然后采用图分割算法将图分割为子图, 其分割策略是最小化不同子图之间边的数量. 将
数据集中的每个点分配到距离最近的子图中, 从而实现对数据集的分片. 再对每一个分片下的数据集分别构建
HNSW 索引. 查询时首先通过 meta-HNSW 定位相关数据子集, 然后分派查询到部分子集来进行查询处理, 通过这
种方法能够充分利用计算资源, 提升吞吐率. 在系统架构层面, 它包括 3 个主要部件: 协调器 (处理查询分派)、执
行器 (子 HNSW 搜索) 和消息代理 (Kafka 实现可靠通信), 支持异步处理和容错机制.
[110]
Auncel 是一个基于 IVF 索引的相似性搜索引擎, 用于解决分布式场景下的无法提供理论性能保证的问题.
其核心思想是通过单个查询向量的局部几何特性, 为每个查询构建精确的错误延迟概要 (error-latency profile,
ELP). 此概要使 Auncel 能够对适量的数据进行采样, 以处理给定的查询, 满足其错误或延迟要求. 其搜索大致过程
和基本的 IVF 索引搜索方法一致, 在完成搜索每个聚簇时额外添加了如下步骤, 利用中间搜索结果和 ELP 来预测
当前的错误率, 如果错误率或者时限满足要求, 就终止搜索返回结果. 其分布式部署方案是将数据分片, 每个工作
节点处理本地分片, 领导者节点聚合结果. Auncel 随机选择领导者节点来处理查询. 实验结果显示, Auncel 在满足
错误或延迟限制的同时显著降低了查询延迟.
(2) 基于硬件的分布式优化
SmartANNS [138] 是一个利用 SmartSSD 来解决 10 亿级别数据相似性搜索的方法. 它将数据分配到多个 SmartSSD
上, 实现高效的查询. SmartSSD 是一种将处理能力集成到 SSD 中的计算存储驱动器, 可直接在设备上处理数据,
减少对 CPU/GPU 传输的需求. SmartANNS 协同架构中主机维护分片质心, 作为全局协调器筛选搜索空间, 每个
SmartSSD 对分片数据建立 HNSW 索引执行搜索. 它允许数据复制分配到多块 SmartSSD 中, 并通过离线采样分析
分片热度, 优化数据布局, 结合数据局部性和设备负载均衡调度查询, 并通过训练 GBDT 模型来动态地确定搜索
分片范围, 避免冗余计算.
[148]
CXL (compute express link) 旨在实现处理器和设备之间的低延迟、高带宽连接, 近年来取得了越来越广泛
的关注. CXL-ANNS [149,150] 是一个利用软硬件协作来支持 10 亿级别向量搜索的方案. 它利用 CXL 将 DRAM 从主
机中分离, 将所有的必要数据集放入内存池中, 针对搜索中的低延迟问题, 将访问频率高的点预先缓存在本地内存
中, 减少对远程内存池的访问延迟, 对于未缓存的节点, CXL-ANNS 通过预测图的遍历行为, 对即将要访问的节点
提前预取, 从而隐藏访问延迟. 进一步地, 通过 CXL 互联的层次化结构将搜索任务分发到多个硬件进行并行处理.
通过 3 层优化, 系统实现了对大规模向量数据的高精度低延迟搜索.
通过将数据分片处理, 可以有效地降低单机的处理负担, 实现对大规模向量数据的高效检索, 充分利用新硬件
的能力来设计搜索架构可以更好地优化向量搜索. 未来将继续探索如何利用分布式来处理大规模数据下的向量检
索, 设计高效的分布式索引结构和分布式检索算法是一个重要的研究方向.
3.7 面向混合查询场景的优化
混合向量搜索 (hybrid vector search) 研究同时考虑向量近似最近邻搜索和属性关键词信息是否满足要求的搜
索问题, 以适应多样的复杂查询需求, 提供更准确、更全面的搜索结果. 支持混合搜索是向量数据库的一个重要功
能, 为了完成混合搜索, 从搜索的实现上可以分为 4 种 [63] : 先向量搜索后关键词 (post-filtering, 后过滤)、先关键词
后向量搜索 (pre-filtering, 先过滤) 、单独搜索后合并、联合搜索. 对于先过滤的方案, 如果具有相同关键词的对象
很多, 就会检查大量的数据; 对于后过滤场景, 如果要查询的关键词选择度很低, 就难以搜到相应的结果; 对于合并
方案, 其在信息检索重排序阶段可以更灵活, 但是前期的搜索阶段会有很大的性能开销; 对于联合方案, 如何设计
高效的索引是很大的挑战. 除了根据实现方式上的分类外, 从场景上还可以分为关键词过滤和范围过滤两类. 下面
介绍具体的技术.

