*Redis VLINKS 命令

VLINKS 用于返回指定向量在集合中相似度最高的关联向量 ID 列表。


*语法

VLINKS key id [K count]

*参数说明

参数 类型 必填 说明
key String 向量集合的键名
id String 查询向量的唯一标识符
K Keyword 返回数量选项
count Integer 返回的关联向量数量(默认 10)

*返回值

  • Array:关联向量 ID 列表,按相似度降序排列
  • Nil:ID 不存在于该集合中
  • Error:键对应的值不是向量集合类型

*时间复杂度

O(log n + k),其中 n 为向量总数,k 为返回数量


*示例

*基本用法

> VADD user_embeddings user1 [0.1, 0.2, 0.3, 0.4]
1
> VADD user_embeddings user2 [0.11, 0.21, 0.31, 0.41]
1
> VADD user_embeddings user3 [0.9, 0.8, 0.7, 0.6]
1
> VLINKS user_embeddings user1
1) "user2"
2) "user3"

*指定返回数量

> VLINKS user_embeddings user1 K 1
1) "user2"

*查询不存在的 ID

> VLINKS user_embeddings user999
(nil)

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key 或 id 参数 补充完整参数
ERR count is not a valid integer K 后面的 count 不是整数 检查 count 格式
WRONGTYPE Operation against a key holding the wrong kind of value key 不是向量集合 确认 key 类型正确

*最佳实践

  • 场景:推荐系统中的「相似用户」「相似商品」关联推荐
  • 合理设置 K 值,避免返回过多低相似度结果
  • 结合 VISMEMBER 做前置校验,确保查询 ID 存在

*FAQ

Q1: VLINKS 和 VSIM 有什么区别? A: VLINKS 基于集合中已有的某个向量 ID 查找相似向量,VSIM 基于外部传入的向量数据进行相似度搜索。

Q2: 返回的结果包含查询 ID 本身吗? A: 默认不包含,仅返回其他关联向量。

Q3: 相似度阈值可以配置吗? A: 当前命令未提供显式阈值参数,可通过调整 K 值控制返回数量,由应用层过滤低相似度结果。