*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 中。