VSIM
通过向量相似度返回元素
语法
VSIM key (ELE | FP32 | VALUES num) (vector | element) [WITHSCORES] [WITHATTRIBS] [COUNT num] [EPSILON delta] [EF search-exploration-factor] [FILTER expression] [FILTER-EF max-filtering-effort] [TRUTH] [NOTHREAD]
引入版本:8.0.0
复杂度摘要:O(log(N)
返回与给定向量或元素相似的元素。使用此命令可在向量集中执行近似或精确相似性搜索。
您可以使用向量(通过 FP32 或 VALUES num)或通过引用另一个元素(使用 ELE)进行查询。可选参数可让您控制搜索行为,例如分数输出、结果计数和过滤选项。
VSIM word_embeddings ELE apple
1) "apple"
2) "apples"
3) "pear"
4) "fruit"
5) "berry"
6) "pears"
7) "strawberry"
8) "peach"
9) "potato"
10) "grape"
您可以包含相似度分数、属性(如果有)并限制结果数量:
VSIM word_embeddings ELE apple WITHSCORES WITHATTRIBS COUNT 3
1) "apple"
2) "0.9998867657923256"
3) "{\"len\": 5}"
4) "apples"
5) "0.859852746129036"
6) "{\"len\": 6}"
7) "pear"
8) "0.8226882070302963"
9) "{\"len\": 4}"
设置EF(探索因子)以牺牲性能为代价提高召回率。使用 TRUTH 选项执行精确的线性扫描,对于基准测试很有用。 NOTHREAD 选项在主线程中运行搜索,可能会增加服务器延迟。
必需参数
key
是保存向量集数据的键的名称。
ELE | FP32 | VALUES num
指定如何提供输入向量。使用 ELE 引用现有元素,使用 FP32 引用二进制浮点格式(需要小端编码),或使用 VALUES num 引用字符串化浮点值列表。
vector or element
是用作相似性参考的矢量数据(对于 FP32 或 VALUES)或元素名称(对于 ELE)。
可选参数
WITHSCORES
返回每个结果旁边的相似度分数(从 1 到 0)。 1分是相同的; 0 则相反。
WITHATTRIBS
对于每个元素,返回与该元素关联的 JSON 属性,或者在不存在属性时返回 NULL。
COUNT num
限制返回结果数量为num。
EPSILON delta
是一个介于 0 和 1 之间的浮点数。它用于检索距离不超过指定 delta 的元素。在向量集中,返回的元素的相似度得分(与查询向量相比)介于 1 和 0 之间,其中 1 表示相同,0 表示相反的向量。例如,如果使用 0.2 参数指定 EPSILON 选项,则意味着仅返回相似度为 0.8 或更好(距离 < 0.2)的元素。当您指定较大的 COUNT,但您不希望元素距离查询向量太远时,这非常有用。
EF search-exploration-factor
控制搜索工作。较高的值会探索更多的节点,以速度为代价提高召回率。典型值范围为 50 到 1000。
FILTER expression
应用过滤表达式来限制匹配元素。有关语法详细信息,请参阅 过滤搜索。
FILTER-EF max-filtering-effort
限制FILTER表达式的过滤尝试次数。请参阅 过滤搜索 了解更多信息。
TRUTH
绕过 HNSW 图,强制对所有元素进行精确的线性扫描。用于基准测试或计算召回率。这要慢得多 (O(N))。
NOTHREAD
在主线程而不是后台线程中执行搜索。对于小型向量集或基准有用。这可能会在执行期间阻塞服务器。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
以下之一: * 简单错误回复 表示未知元素。 * 数组回复(空数组)表示未知键。 * 数组回复 具有匹配的元素。 * 使用 WITHSCORES 选项,具有匹配 散装字符串 元素的 数组回复 与 散装字符串 并列作为浮点分数。 * 使用 WITHSCORES 和 WITHATTRIBS 选项时,数组回复 具有匹配的 散装字符串 元素,以及两个附加元素:(1) 散装字符串 作为浮点分数,(2) 散装字符串 表示与元素关联的 JSON 属性,或 nil(空批量字符串) 表示缺少属性的元素。
RESP3
以下之一: * 简单错误回复 表示未知元素。 * 数组回复(空数组)用于未知键。 * 数组回复 具有匹配的元素。 * 使用 WITHSCORES 选项,地图回复 具有匹配的 散装字符串 元素(键)和 双 分数(值)。 * 对于 WITHSCORES 和 WITHATTRIBS 选项,地图回复 具有匹配的 散装字符串 元素(键),以及具有以下元素的附加数组(值):(1) 双重回复 表示分数,(2) 散装字符串 表示与该元素关联的 JSON 属性,或 空 表示缺少属性的元素。
相关主题
资料来源:Redis 官方 VSIM 文档;中文内容参考 Redis 文档许可。