当 RAM 太昂贵时如何优化矢量搜索:磁盘上 ANN 索引与内存中 ANN 索引

通过权衡 HNSW、SPANN 和 DiskANN 的延迟和存储来构建经济高效的基础架构这篇文章《当 RAM 变得太昂贵时如何优化矢量搜索:磁盘上与内存中 ANN 索引》首先出现在《走向数据科学》上。

来源:走向数据科学

,矢量搜索已成为人工智能基础设施的关键部分,为从 RAG 和语义搜索到代理记忆和上下文层的用例提供支持。随着代理系统的兴起,公司试图为代理提供尽可能多的上下文,这需要矢量数据库索引从最初的数百万或数千万规模增长到数亿甚至数十亿。在这种规模下,在 RAM 中存储索引和关联数据每月将花费数千美元,并且 HNSW 可能成为可扩展性瓶颈。

在本文中,我想深入探讨真正使语义搜索快速高效的细节:近似最近邻 (ANN) 算法、存在哪些不同选项以及它们的权衡。

深入研究矢量数据库

矢量数据库由三个主要组成部分组成:

  • embeddings – 语料库的数字表示
  • 搜索算法和索引结构——算法定义搜索质量和速度
  • 存储 – 数据如何存储(在内存中、在磁盘上、有效负载以及嵌入等)。无论是在 RAM 中还是在磁盘上,它都决定了大规模的成本和延迟
  • 嵌入已经在许多文章中得到了很好的定义和讨论,本文将重点关注搜索算法,特别是 ANN 算法。搜索执行通常有两种方法:

  • 精确搜索 - 尽管在延迟方面不能很好地扩展,但它展示了最佳的检索指标
  • 近似最近邻 (ANN) – 以检索质量换取延迟和可扩展性。
  • 精确搜索是一种简单的方法,它循环索引中的所有条目并计算搜索查询与现有数据之间的距离。通过延迟和可扩展性的权衡,不存在与任何近似或概括相关的损失。对于非常小的索引或实验来说,这是一个很好的方法,但通常不太适合生产规模。

    内存中 ANN

    磁盘 ANN

    跨度