VectorDistance(NoSQL 查询)
适用范围: NoSQL
返回两个指定矢量之间的相似性分数。
语法
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
参数
参数 | 说明 |
---|---|
vector_expr_1 |
float32 数组或更小的数组。 |
vector_expr_2 |
float32 数组或更小的数组。 |
bool_expr |
一个可选布尔值,指定如何在 ORDER BY 表达式中使用计算值。 如果为 true ,则使用暴力攻击。 false 的值使用在矢量属性上定义的任何索引(如果存在)。 默认值是 false 。 |
obj_expr |
可选的 JSON 格式的对象文字,用于指定矢量距离计算选项。 有效的项包括 distanceFunction 、dataType 和 searchListSizeMultiplier 。 |
可选 obj_expr
支持的参数
参数 | 说明 |
---|---|
distanceFunction |
用于计算距离/相似度的指标。 |
dataType |
矢量的数据类型。 float32 、int8 、uint8 值。 默认值是 float32 。 |
searchListSizeMultiplier |
一个整数,指定执行矢量搜索时搜索列表的大小。 增加其值可以提高准确性,代价是 RU 成本和延迟。 最小值为 1,默认值为 5,最大值为 100。 |
distanceFunction
支持的指标包括:
cosine
,其值范围为-1
(最不相似)到+1
(最相似)。dotproduct
,其值范围为-∞
(-inf
)(最不相似)到+∞
(+inf
)(最相似)。euclidean
,其值范围为0
(最不相似)到+∞
(+inf
)(最相似)。
返回类型
返回一个数值表达式,它用于枚举两个表达式之间的相似性分数。
示例
第一个示例显示仅包含所需参数的前 10 个矢量搜索查询。 投影一个属性,以及 VectorDistance
返回的分数。 然后,我们使用一个 ORDER BY
子句,按相似度由高到低对 VectorDistance
分数进行排序。
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)
下一个示例还包括 VectorDistance
的可选参数
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32',})
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32',})
注解
- 此函数需要注册 Azure Cosmos DB NoSQL 矢量搜索预览功能。
- 此函数受益于矢量索引
- 如果提供
false
作为可选的bool_expr
,则使用路径上定义的矢量索引(如果存在)。 如果未在矢量路径上定义任何索引,则此函数将恢复为完全扫描,并且与使用矢量索引相比,会产生更高的 RU 费用和更高的延迟。 - 在
ORDER BY
子句中使用VectorDistance
时,不需要为ORDER BY
指定方向,因为根据使用的相似度指标,结果始终按最相似(第一个)到最不相似(最后一个)的顺序排序。 - 结果表示为相似性分数。