内存优化

了解如何优化 Redis 向量集的内存消耗

概述

Redis 向量集效率很高,但向量相似性索引和图遍历需要权衡内存。本指南通过量化、图调整和属性选择来帮助您管理内存使用。

量化模式

向量集支持三种量化级别

模式 内存使用量 召回率 备注
Q8 小 4 倍 默认,快速且准确
BIN 小 32 倍 较低 最快,最适合粗略搜索
NOQUANT 完整大小 最高 精度最高,速度最慢

除非您的用例需要超高精度(使用 NOQUANT)或超高效率(使用 BIN),否则请使用 Q8

图结构内存

HNSW 图每个节点存储多个连接。每个节点

  • 平均有 M * 2 + M * 0.33 个指针(默认 M = 16)。
  • 每个指针占用 8 字节。
  • 每个节点分配约 1.33 层。

一个 M = 64 的单个节点仅链接就可能消耗约 1 KB 的内存。

减少内存

  • 降低 M 以减少每个节点的连接。
  • 除非需要提高召回率,否则请避免使用不必要的过大 M 值。

属性和标签大小

每个节点存储

  • 一个字符串标签(元素名称)
  • 可选的 JSON 属性字符串

提示

  • 对标签使用简短的固定长度字符串。
  • 保持属性 JSON 精简且扁平。例如,使用 {"year":2020} 而不是嵌套数据。

向量维度

高维向量会增加存储空间

  • 300 个分量(FP32)= 1200 字节/向量
  • 300 个分量(Q8)= 300 字节/向量

您可以在执行 VADD 时使用 REDUCE 选项来减少维度,该选项应用了随机投影

这将一个 300 维向量投影到 100 维,从而减少大小并提高速度,但会牺牲一些召回率。

总结

策略 效果
使用 Q8 最适合大多数用例的权衡
使用 BIN 内存最小,搜索最快
降低 M 缩小 HNSW 链接图大小
减少维度 减少每个向量的内存
最小化 JSON 属性更小,每个节点内存更少

另请参阅

评价本页
返回顶部 ↑