本文提出了 DecoupleVS,一种针对大规模向量检索(ANNS)的解耦存储框架。该框架通过分离向量数据与索引元数据,引入定制化无损压缩和延迟感知的搜索机制,在保持高精度和高性能的同时,显著提升了磁盘存储效率。
TL;DR
在当前 AI 驱动的业务中,管理百亿、千亿级规模的向量数据已成为常态。然而,现有的磁盘向量检索(ANNS)系统面临着存储成本高昂、I/O 等待严重的困境。由香港中文大学与字节跳动联合提出的 DecoupleVS,通过将**向量数据(Data)与辅助索引(Metadata)**彻底解耦,并辅以定制的无损压缩技术,成功在降低近 60% 存储成本的基础上,实现了检索性能的翻倍。
背景定位
目前 SOTA 的磁盘 ANNS 系统(如 DiskANN)通常采用“协同增益”的设计,将向量与其在图索引中的邻居列表存放在一起。这种设计在小规模下简化了 I/O,但在十亿级规模下暴露了三大弊端:
- 空间浪费:索引元数据往往比向量本身还大,且传统的对齐存储产生了大量碎片。
- 读取放大:为了找到 Top-K,系统必须读取大量不必要的候选向量全量数据。
- 写入惩罚:即使只更新一个向量,也可能导致整个索引块的重写。
痛点深挖:语义与访问模式的本质差异
作者通过深度分析发现,向量数据和索引元数据的特性截然不同:
- 语义差异:向量是高维数值特征,具有较强的列式分布特性(同一维度值分布集中);而索引则是邻居 ID 的列表(单调递增的整数)。
- 访问差异:搜索时索引被频繁遍历,而全量向量仅在最后的 Rerank 阶段被少量访问。
核心方法论:DecoupleVS 的解耦之道
1. 定制化无损压缩 (Tailored Lossless Compression)
DecoupleVS 摒弃了 LZ4 等通用压缩,设计了两套方案:
- 向量压缩:利用维度间低色散的特点,先构建“基向量”,计算 XOR-delta(异或增量),再通过高效的 Huffman 编码进一步压缩熵值。
- 索引压缩:由于邻居 ID 序列可以排序,DecoupleVS 使用 Elias-Fano 算法 将稀疏的 ID 编码为极高压缩比的位图表示。
2. 分层存储布局 (Hierarchical Storage Layouts)
为了处理压缩后的定长失效问题,系统引入了 Block-Chunk-Segment 的分层结构。
DecoupleVS 总体架构:分离存储向量文件与索引文件,内存维持轻量级的压缩元数据。
3. 延迟感知的搜索路径优化
DecoupleVS 将读取路径分为两步:
- 图遍历(Critical Path):只访问被 Elias-Fano 压缩的索引,并使用 LRU 缓存热点邻居列表。
- 自适应预取(Pre-ranking):在图搜索接近稳定时,异步预取最有潜力的候选向量。这种设计去除了关键路径上的大块向量读取,极大缓解了 I/O 拥塞。
实验与结果分析
实验涵盖了 SIFT1B 和 SPACEV1B 等真实世界十亿级数据集。
- 存储压缩比:在 DecoupleVS100M 数据集上,相比 DiskANN 节省了 58.7% 的磁盘空间。
- 吞吐量性能:在保证同样召回率的前提下,DecoupleVS 的 QPS(每秒查询数)提升了 2.18 倍。
- 混合负载:在并发更新和搜索的场景下,DecoupleVS 的 P99 延迟降低了约 50%,证明了其追加写(Append-only)策略在处理实时数据时的优越性。
不同数据集下的吞吐量-召回率对比曲线,DecoupleVS(绿色/黄色)在高精度区间优势明显。
深度洞察与总结
Takeaway: DecoupleVS 的成功在于其深刻地理解了“数据”与“索引”在存储和推理过程中的不对称性。通过解耦,它不仅释放了由于紧耦合带来的空间冗余,更给了系统开发者在不同路径上做“差异化服务”的空间(例如为索引提供更昂贵但更快的 SSD 分区)。
局限性与未来展望:目前框架主要基于图索引(Vamana),虽然其原理可推广至聚类索引(SPANN),但在动态垃圾回收(GC)及其对长尾延迟的影响方面仍有进一步优化的空间。随着 AI 基础设施向“存算分离”演进,这种解耦架构将是必然的选择。
