性能

了解 Redis 向量集合在负载下的表现,以及如何优化速度和召回率

查询性能

使用 VSIM 的向量相似度查询默认是多线程的。Redis 最多使用 32 个线程并行处理这些查询。

  • VSIM 性能与可用 CPU 核心数几乎呈线性关系。
  • 对于使用 int8 量化的包含 300 万项和 300 维向量的集合,预期每秒可执行约 5 万次相似度查询。
  • 性能在很大程度上取决于 EF 参数
    • 较高的 EF 值可提高召回率,但会降低搜索速度。
    • 较低的 EF 值可更快地返回结果,但精度会降低。

插入性能

使用 VADD 命令插入向量比查询计算成本更高

  • 插入操作默认是单线程的。
  • 使用 CAS 选项将候选图搜索卸载到后台线程。
  • 单节点每秒可执行数千次插入操作。

量化效果

量化对速度和内存都有很大影响

  • Q8(默认):比 FP32 小 4 倍,高召回率,高速度
  • BIN(二进制):比 FP32 小 32 倍,较低召回率,最快搜索速度
  • NOQUANTFP32):全精度,性能较慢,内存使用最高

使用最适合你的精度和效率权衡的量化模式。以下示例展示了不同的模式如何影响一个简单的向量。请注意,即使在 NOQUANT 模式下,由于浮点舍入,值也会略有变化。

删除性能

使用 DEL 删除大型向量集合可能会导致延迟飙升

  • Redis 必须解除链接并重构许多图节点。
  • 删除数百万个元素时,延迟最为明显。

保存和加载性能

向量集合保存和加载完整的 HNSW 图结构

  • 从磁盘重新加载速度快,无需重新构建图。

示例:包含 300 万个向量和 300 个分量的向量集合在大约 15 秒内加载。

调优技巧摘要

因素 对性能的影响 建议
EF 查询速度较慢,但召回率较高 从较低值开始(例如 200),然后向上调整
M 每节点内存更多,召回率更高 使用默认值,除非召回率过低
量化类型 二进制最快,FP32 最慢 使用 Q8BIN,除非需要全精度
CAS 多线程插入速度更快 需要在高写入吞吐量时使用

另请参阅

评价此页面
回到顶部 ↑