*Redis VGETATTR 命令

VGETATTR 用于获取指定向量集合中某个向量的属性值。


*语法

VGETATTR key id attr

*参数说明

参数 类型 必填 说明
key String 向量集合的键名
id String 向量的唯一标识符
attr String 属性名

*返回值

  • String / Integer / Float:属性值
  • Nil:属性不存在或 ID 不存在
  • Error:键对应的值不是向量集合类型

*时间复杂度

O(1)

*

*示例

*基本用法

> VADD user_embeddings user1 [0.1, 0.2, 0.3] age 25 city "Beijing"
1
> VGETATTR user_embeddings user1 age
"25"
> VGETATTR user_embeddings user1 city
"Beijing"

*获取不存在的属性

> VGETATTR user_embeddings user1 gender
(nil)

*获取不存在的 ID

> VGETATTR user_embeddings user999 age
(nil)

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key、id 或 attr 参数 补充完整参数
WRONGTYPE Operation against a key holding the wrong kind of value key 不是向量集合 确认 key 类型正确

*最佳实践

  • 场景:获取向量元数据用于过滤、展示、业务逻辑判断
  • 属性命名建议统一规范,避免大小写混用
  • 属性值建议保持简单类型,便于索引和查询

*FAQ

Q1: VGETATTR 和 VEMB 有什么区别? A: VGETATTR 获取的是向量的元数据属性,VEMB 获取的是向量本身的浮点数组数据。

Q2: 可以一次获取多个属性吗? A: 当前命令仅支持单属性查询,多次获取建议使用多个 VGETATTR 命令配合 Pipeline。

Q3: 属性值最大能存多少? A: 通常建议单个属性值不超过 512 KB,复杂数据建议存储到 Hash 或 JSON 中。