*Redis VADD 命令

VADD 用于将向量及其元数据添加到指定的向量集合中。


*语法

VADD key id vector [attribute value ...]

*参数说明

参数 类型 必填 说明
key String 向量集合的键名
id String 向量的唯一标识符
vector Array 向量数据(浮点数数组)
attribute String 属性名(可多次出现)
value String/Number 属性值(需与 attribute 成对出现)

*返回值

  • Integer(1):新向量添加成功
  • Integer(0):向量已存在,执行更新
  • Error:参数错误、类型不匹配或维度不一致

*时间复杂度

O(d),其中 d 为向量维度


*示例

*基本用法

> VADD user_embeddings user1 [0.1, 0.2, 0.3, 0.4]
1
> VADD user_embeddings user2 [0.5, 0.6, 0.7, 0.8] age 25 city "Beijing"
1

*带属性的向量

> VADD product_vectors sku123 [0.01, 0.99, 0.5] category "electronics" price 1999
1

*更新已存在的向量

> VADD user_embeddings user1 [0.2, 0.3, 0.4, 0.5]
0

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key、id 或 vector 检查必传参数
ERR vector dimension mismatch 向量维度与现有集合不一致 确保所有向量维度相同
ERR attribute value pair error 属性与值未成对出现 检查 attribute 和 value 是否一一对应

*最佳实践

  • 场景:用户画像向量、商品向量、文本嵌入向量存储
  • 所有向量必须保持相同维度,否则会导致错误
  • 合理设计 id 便于后续查询和删除
  • 批量写入时建议使用管道(Pipeline)减少 RTT

*FAQ

Q1: VADD 和 SET 有什么区别? A: VADD 专门用于向量存储,支持浮点数组和属性扩展;SET 仅支持字符串或二进制值。

Q2: 可以添加不同维度的向量到同一个 key 吗? A: 不可以。同一个 key 下的所有向量必须具有相同的维度。

Q3: 属性数量有上限吗? A: 取决于具体实现,通常建议单个向量属性不超过 32 个,以保证查询性能。