mcpField
Q
qdrant-minimize-latency

qdrant-minimize-latency

github.com/qdrant数据与数据库26541 次安装1 天前更新
代码仓库

关于 qdrant-minimize-latency

qdrant-minimize-latency 是一项面向 Qdrant 的调优技能,专注于降低单次查询延迟。内容涵盖分段配置、内存索引、查询参数、存储和 RAM 管理,并区分延迟与吞吐量优化目标。

主要功能

  1. 01按 CPU 核心数调整分段
  2. 02将量化向量和 HNSW 保留在内存
  3. 03以召回率换取查询速度
  4. 04使用本地 NVMe 存储
  5. 05管理 RAM 压力与后台索引

适用场景

  1. 01降低单次查询工作负载的延迟
  2. 02排查 RAM 导致的延迟下降
  3. 03在高峰索引时段调整 Qdrant

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/qdrant/skills --skill qdrant-minimize-latency

安装后在 Claude Code 中输入/qdrant-minimize-latency确认已加载。

详细介绍

查询延迟扩展

单次查询的延迟由查询执行路径中最慢的组件决定。它有时与吞吐量相关,但并非总是如此——吞吐量和延迟的优化方向相反。

低延迟优化旨在让单次查询尽可能充分地利用资源,而吞吐量优化旨在尽量减少每次查询的资源使用量,以支持更多并行查询。

降低延迟的性能调优

  • 增加分片数量,使其与 CPU 核心数匹配(default_segment_number: 16)最大限度降低延迟
  • 将量化向量和 HNSW 保留在 RAM 中:Qdrant 1.19 或更新版本使用 memory: pinned;1.18 或更早版本中,量化向量使用 always_ram: true,HNSW 使用 hnsw_config.on_disk: false 内存层级
  • 在查询时降低 hnsw_ef(以召回率换取速度)搜索参数
  • 使用本地 NVMe,避免使用网络存储

内存压力与延迟

RAM 是影响延迟最关键的资源。如果工作集超出可用 RAM,操作系统缓存逐出会导致严重且持续的延迟下降。

  • 优先纵向扩展 RAM。工作集超过 80% 时尤其重要。
  • 使用量化:标量量化(减少 4 倍)或二进制量化(最多减少 32 倍)量化
  • 如果过滤不频繁,将负载索引移至磁盘:Qdrant 1.19 或更新版本使用 memory: cold,1.18 或更早版本使用 on_disk: true 磁盘上的负载索引
  • 设置 optimizer_cpu_budget,限制后台优化使用的 CPU 数量
  • 安排索引:在高峰时段设置较高的 indexing_threshold

延迟的纵向扩展

增加 RAM 和使用更快的 CPU 可直接降低延迟。节点规格指南请参阅纵向扩展。

不要这样做

  • 不要指望在同一节点上同时优化延迟和吞吐量
  • 对延迟敏感的工作负载,不要使用数量少、体积大的分片(每个分片都需要更长的搜索时间)
  • 不要让 RAM 使用率超过 90%(缓存逐出会导致严重的延迟下降,且可能持续数天)
  • 性能调试时不要忽略优化器状态
  • 不要在未进行负载测试的情况下缩减 RAM(缓存逐出可能导致持续数天的延迟故障)

评论

支持 Markdown