SuperAPI AI 工具集

qdrant-memory-usage-optimization

通用与其它

查看项目

更新于 10-16 04:54

技能介绍

用途:诊断并降低 Qdrant 的内存占用,适用于出现“内存过高”“RAM 持续增长”“节点崩溃”“内存不足”“内存泄漏”等情况的部署。

主要能力:区分两类内存——常驻内存(RSSAnon,用于 ID tracker 等内部结构及常驻 RAM 的组件)与 OS 页缓存(缓存磁盘读取,可被释放)。指出页缓存占满 RAM 属正常,但常驻内存超过总 RAM 的 80% 即为问题信号。可通过 /metrics 端点监控内存使用。

使用方式与优化手段:

  • 量化:仅在 RAM 中保存压缩向量。
  • 使用 float16 或 uint8 数据类型,分别将向量内存降至约 1/2 或 1/4,精度有取舍;1.19+ 的 turbo4(4 位/维度,仅稠密向量)约降 8 倍。
  • 利用 MRL 仅在 RAM 保存小向量,大向量留在磁盘。
  • 多租户且租户较小时,可将向量存磁盘。
  • 低 RAM 环境启用异步 I/O:1.19+ 用 storage.performance.io_uring: auto,1.18 及更早用 async_scorer: true,需 Linux 内核支持 io_uring。
  • 将 payload 留在磁盘:1.19+ 默认 memory: cold;1.18 及更早设 on_disk_payload: true。
  • payload 索引存磁盘:1.19+ 用 memory: cold,1.18 及更早用 on_disk: true。
  • 稀疏向量存磁盘:1.19+ 在稀疏向量索引上设 memory: cold(默认 pinned),1.18 及更早用 on_disk: true。

HNSW 索引放磁盘:频繁访问的组件放磁盘可能显著降低性能,但在低延迟磁盘(本地 NVMe 等)、多租户仅部分租户频繁访问、或启用 inline storage 的部署中可考虑。1.19+ 在 hnsw_config 设 memory: cold,1.18 及更早设 hnsw_config.on_disk: true。

容量规划:常规搜索场景参考 Capacity planning 文档,大规模场景参考 Large scale memory usage example;payload 索引与 HNSW 图也占内存,优化期间被优化段会完整载入 RAM,需预留余量,max_segment_size 越大所需余量越多。

限制:具体内存需求取决于用例,资料未给出统一数值;部分配置项仅适用于特定 Qdrant 版本。