百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#704·zvec

[ Feature] 启动缓冲存储器用于内存- Bunded Query Caching

作者: iaojnh创建于 2026年8月27日更新于 2026年8月27日
标签feature

□ 背景情况

zvec目前主要依靠mmap进行索引访问. 当一个索引明显大于可用的内存时,mmap不会为RSS或常住页面提供明确的预算. 共享同一进程的多集和应用代码也可能争夺内存.

缓冲存储为索引页提供全流程共享缓存预算. 它的主要用途是当完整的指数无法在经济上保存在内存中时,但频繁被再利用的工作集可以放入缓冲池.

代表验证的结果:

  • IVF,Cohere 1M,80/20热点工作量,256 MiB Pool:峰值RSS为303 MiB,而有mmap的MiB为2,888个,QPS/GiB的QPS为1.72×.
  • DiskANN、Cohere 1M、80/20语义工作量、512个MiB Pool:QPS增加39%,P99减少14%,物理读取减少80%,Recall@10保持不变。

□ 目标

释放缓冲存储器作为明确的选入功能,最初针对IVF和DiskANN查询工作量:

  • 允许用户配置全过程共享内存预算。
  • 通过缓冲存储器支持查询IVF和DiskANN索引。
  • 将缓冲池、RocksDB和所需的元数据置于统一的内存预算框架之下。
  • 改进QPS/GiB,并减少热点和长尾工作量下重复的物理阅读。
  • 保持mmap作为默认行为而不影响现有用户.

□ 范围

  • Harden Buffer Pool寿命周期、货币、驱逐、回想和记忆核算。
  • 支持 Linux io uring, libaio, 以及预后退路径, 并带有 macOS 和 Windows 兼容性 。
  • 支持缓冲存储器读取和写作。
  • 整合IVF,包括跨页张贴名单访问。
  • 将DiskANN文件访问与缓冲存储整合。
  • 在不通过Python API暴露单独比例的情况下,给RocksDB内部固定份额内存预算.
  • 为Python和C++提供明确的选入API。
  • 增加正确性、内存、性能、召回和跨平台测试。
  • 提供用户文件和可复制的基准。

□ 超出范围

  • 无法保证建立索引的峰值内存在`memory limit mb'之内。 缓冲集合可能在索引构建过程中临时使用mmap. 内存限制索引楼将单独处理。
  • 进程RSS预计不会等于缓冲池大小。 RSS还包括查询工作空间,线程堆栈,运行时间,分配器,以及所需的元数据. ——不提供严格的每集内存隔离. 所有缓冲器在一个过程中的收款都分享同样的预算.
  • 平面指数扫描大多数向量,提供有限的页面再利用,因此它们不是缓冲存储的目标工作量。
  • HNSW图访问有一定地点,但其图和向量访问模式没有显示在相同的内存预算下比DiskANN明显优势. 本版将不推广HNSW性能效益.

□ 用户 API

2zz
导入 zvec

{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}在任何收集行动之前必须先通知我们
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}预算由所有的缓冲器收藏品共同承担
. . . . . . .

内容来源: alibaba/zvec

查看 GitHub 原文在 GitHub 查看讨论