你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 成本和延迟。 Min=1,Default=5,Max=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'})
重要
始终在查询的 SELECT
语句中使用 TOP N
子句。 否则,矢量搜索将尝试返回明显更多的结果,这将导致查询使用更多的 RU,并且会产生比实际所需更高的延迟。
注解
- 此函数需要启用 Azure Cosmos DB NoSQL 矢量搜索功能。
- 此函数受益于矢量索引
- 如果
false
以可选bool_expr
方式提供,则使用路径上定义的向量索引(如果存在)。 如果未在矢量路径上定义任何索引,则此函数将恢复为完全扫描,并且与使用矢量索引相比,会产生更高的 RU 费用和更高的延迟。 - 在
ORDER BY
子句中使用VectorDistance
时,不需要为ORDER BY
指定方向,因为根据使用的相似度指标,结果始终按最相似(第一个)到最不相似(最后一个)的顺序排序。 - 结果表示为相似性分数。