微信扫码
添加专属顾问
我要投稿
蚂蚁集团开源VSAG框架,通过三大优化实现图索引性能飞跃,最高提升400%检索速度!核心内容: 1. 图索引技术面临的三大核心挑战:缓存不命中、参数敏感性和距离计算瓶颈 2. VSAG框架的三大创新优化:缓存优化、自动调参和距离计算加速 3. 实际应用效果:在保证高召回率前提下实现400%性能提升
VSAG 是蚂蚁集团开源的图索引向量检索框架。
本文源自 VSAG 团队在 VLDB'25 发表的《VSAG: An Optimized Search Framework for Graph-based Approximate Nearest Neighbor Search》,介绍 VSAG 框架如何通过缓存优化、自动调参和距离计算加速,在保证高召回率前提下将检索性能提升最高 400%。
随着半结构化数据的快速增长,向量表示与检索技术在人脸识别(如支付宝)、图像搜索(如 Google)和视频推荐(如 YouTube)等场景中广泛应用。近似最近邻搜索(ANNS)作为海量向量检索的核心,旨在高效找出与查询向量距离最近的 Top-K 相似项,通过容忍少量召回误差显著提升搜索效率。
当前主流索引分为两类:基于空间划分(如 IVF、LSH)和基于图(如 HNSW、DISKANN)。前者将数据划分为子空间,内存访问连续,缓存命中率高,但受限于高维分割精度,难以满足高召回需求;后者将向量建为图结构,通过贪心搜索实现高精度检索。图索引在高维场景下,能较好达到检索耗时和精度的平衡,其成为工业界和学术界的主流选择。
然而,图索引面临随机内存访问频繁、缓存命中率低、参数敏感和计算开销大等挑战。
目前对图算法的研究大部分都忽略了内存随机访问的开销。即使是相同的算法,不同的实现方式也会表现出显著的性能差异。在没有距离计算优化的图算法实现中,内存随机访问的开销不是瓶颈。然而,在使用一些算法加速(例如,标量量化 SQ)后,距离计算的耗时占比从 90% 锐减到 40% 。更值得关注的是,多达 40% 的开销来自缓存未命中。这些隐藏在复杂度分析背后的常量开销,实质上严重削弱了检索算法的性能。
图 1. VSAG 组件与检索流程
图 2. (a) 通过软件预取来减少 cache miss; (b) 通过提前访问来减少不必要的预取;(c) 通过“跳跃”来减少缓存被驱逐。
图 3. (a) 当 CPU 是瓶颈时,可以提高 PRS 的内存用量以提高 QPS,进而缓解 CPU 压力;(b) 当内存是瓶颈时,可以降低 PRS 的内存用量并更换为更小实例,从而节省成本。
上述优化显著改善了基于图方法的缓存行为。软件预取有效掩盖了内存访问延迟,提升了 CPU 利用率。跳跃式预取结合批量过滤机制大幅减少了无效预取操作。冗余存储则从根本上改变了访问模式,使得原本低效的随机访问转变为可预测的连续访问,极大增强了硬件预取的效果。
实验表明,这些技术协同作用下,缓存命中率显著提升,内存 IO 等待时间大幅降低,整体检索吞吐量得到明显增强。同时,部分冗余设计提供了良好的可配置性,使系统能够适应不同内存敏感场景。在保证高性能的同时控制存储开销,为大规模向量检索系统的工程实现提供了重要的缓存优化路径。
图 4. 在松弛的图索引的边上标记构建参数信息,从而能在搜索时实时选取不同的参数构建的索引
在向量检索过程中,距离计算(DCO)通常占据整个搜索耗时的 90% 以上,尤其是在高维数据(如 960 维 GIST 数据集)场景下,每次查询需执行数千次距离计算,带来巨大计算开销。为突破这一性能瓶颈,VSAG 提出以多精度向量混合搜索为核心的优化框架,将距离计算总成本分解为低精度()和高精度()两部分,即:
通过同时降低单次计算开销和计算次数,实现端到端的效率提升。其核心思想是:在图搜索阶段使用低精度向量加速遍历,在关键路径或最终排序阶段按需使用高精度向量保障召回质量,从而在精度与效率之间取得最优平衡。
为降低单次距离计算耗时,VSAG 结合标量量化(SQ)与 SIMD 指令优化,实现低精度距离计算的极致加速。采用截断式标量量化(Truncated SQ),利用数据分布的 99% 分位数确定值域,避免异常值导致的量化精度损失,并支持从 float32 压缩至 int8 或 int4,显著减少存储与计算负载。配合 AVX512 等 SIMD 指令,可在单条指令中并行处理多个维度甚至多对向量,大幅提升计算吞吐。
图 5. 截断式标量量化过滤掉标量量化的异常值以提高 SQ4 方法的精度
此外,通过算子改写技术将 L2 距离分解为:
其中范数项可预先计算存储,仅实时计算交叉项,将 L2 距离的计算复杂度从 O(3D) 降至接近内积的 O(2D),进一步压缩计算延迟。
为进一步减少高精度距离计算次数,VSAG 引入选择性重排(Selective Re-Rank)机制,实现多精度向量的智能协同。具体来说,引入精度过滤器根据向量的近似距离来判断是否能对结果有较大贡献。在搜索过程中,VSAG 先使用低精度向量进行快速筛选,并结合“精度过滤器”判断是否值得进行高精度计算。该策略既可用于搜索阶段的候选点过滤,也可应用于结果重排阶段,避免对大量低价值结果进行冗余精算。相比传统全量重排,选择性重排显著降低了高精度计算的调用频次,在保证高召回率的同时极大提升了系统吞吐,特别适用于延迟敏感型与大规模检索场景。
图 6. 精度过滤器估计量化后的距离的入堆概率,以过滤掉不必要的全精度距离计算
图 7. 端到端性能对比
图 7 评估了各算法在召回率(Recall@10)与查询吞吐量(QPS)之间的性能表现。我们报告了每个算法在所有可能参数配置下的最优性能。在所有数据集上,VSAG 在相同召回率下均能实现更高的 QPS。此外,VSAG 在高维向量数据集(如 GIST1M 和 OPENAI)上带来的 QPS 提升更为显著。特别是在 GIST1M 数据集上,当 Recall@10 = 90% 时,VSAG 的 QPS 超过 hnswlib 达 226%;在 OPENAI 数据集上,当 Recall@10 = 80% 时,QPS 提升接近 400%。其主要原因是 VSAG 采用了量化方法,能够在不牺牲搜索精度的前提下显著提升查询吞吐量,而这类方法对高维数据尤其有效。
表 1 进行了消融实验,用于评估所提出各项优化策略的有效性。实验在 GIST1M 和 SIFT1M 数据集上进行,并将相关参数设置为固定值。各项策略按顺序逐步叠加,即第 k 行的结果表示在基线基础上依次引入前 k 项优化后的整体性能。
第一项策略采用量化方法,在保证召回率不变的前提下显著提升了查询吞吐量(QPS)。具体来看,在 GIST1M 数据集上,QPS 从 510 提升至 1272,增长达 149%;在 SIFT1M 数据集上,QPS 从 1695 提升至 2881,增长 69%。这主要得益于量化技术大幅降低了距离计算的计算开销。
第二至第五项策略聚焦于内存访问优化。通过引入软件预取、跳跃式预取、批量处理等机制,有效改善了缓存访问效率。实验结果显示,GIST1M 上的 L3 缓存未命中率从 93.89% 降至 39.23%,SIFT1M 上则从 77.88% 降至 20.98%。缓存命中率的显著提升带来了进一步的性能增益:GIST1M 上 QPS 再提升 70%,SIFT1M 上提升 74%。这是因为在引入量化后,距离计算成本已大幅降低,此时内存访问延迟成为搜索耗时的主要瓶颈。
综上所述,各项优化策略逐级生效,量化显著降低计算开销,内存访问优化缓解缓存瓶颈,共同实现了端到端检索性能的大幅提升。
VSAG 提出了一个开源的近似最近邻搜索(ANNS)框架,可广泛应用于大多数基于图的索引结构。VSAG 通过软件预取、确定性访问的贪心搜索以及部分冗余存储(PRS)等技术,显著降低了缓存未命中率,提升了内存访问效率。框架设计了三层参数自动调优机制,根据不同参数的调优复杂度和影响层级,分别进行环境级、查询级和索引级的自适应优化。同时,VSAG 融合量化技术和选择性重排序策略,将低精度与高精度距离计算有机结合,在保证检索精度的同时大幅减少计算开销。在多个真实数据集上的实验结果表明,VSAG 在相同召回率下显著优于现有主流方法,展现出更优的查询性能和系统效率。
VSAG(Vector Search Algorithm Group)是一个用于向量相似性检索的索引库。其中的索引算法允许用户在大小各种规模的数据集上进行高效检索,特别是那些无法放进内存的数据集。VSAG 已在蚂蚁集团内部支撑数百亿非结构化数据的存储与检索。对外,VSAG 已为 OceanBase、TuGraph、GreptimeDB、Hologres、PolarDB 等工业级系统提供了生产级向量检索能力。
项目地址:https://github.com/antgroup/vsag/
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-22
RAG落地实践:如何用知识打标和元数据维护提升检索精准度?
2025-12-22
告别关键词高亮,语义高亮才是解决搜索 / Agent噪音的标准答案
2025-12-22
让RAG像人类一样“扫视全文”:上下文检索技术详解
2025-12-22
Uber 如何利用 OpenSearch 实现十亿级向量搜索
2025-12-22
别让大模型在“垃圾堆”里找金子:深度解析 RAG 的上下文压缩技术
2025-12-21
终于,NotebookLM 和 Gemini 合体了。这是什么神之更新?
2025-12-21
Cohere 推出 Rerank 4,将上下文窗口从 8K 扩展至 32K,以交叉编码器架构强化长文档语义理解与跨段落关联捕捉
2025-12-21
4.1K Star!GitHub 上挖到一个救星级别的 RAG 数据流水线项目!
2025-10-11
2025-10-04
2025-09-30
2025-10-12
2025-12-04
2025-11-04
2025-10-31
2025-11-13
2025-10-12
2025-12-03
2025-12-22
2025-12-21
2025-12-10
2025-11-23
2025-11-20
2025-11-19
2025-11-04
2025-10-04