VECTORDISTANCE - Cosmos DB 中的查询语言

VECTORDISTANCE 函数返回两个指定向量之间的相似性分数。

一个 Azure Cosmos DB 系统函数,该函数返回容器中一个或多个项的两个向量之间的相似性分数。

Syntax

VECTORDISTANCE(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)

Arguments

Description
vector_expr_1 一维数组float32float16int8unit8类型。
vector_expr_2 一维数组的float32float16int8unit8类型。
bool_expr 一个可选布尔值,指定如何在 ORDER BY 表达式中使用计算值。 如果为 true,则使用暴力攻击。 false 的值使用在矢量属性上定义的任何索引(如果存在)。 默认值为 false
obj_expr 可选的 JSON 格式的对象文字,用于指定矢量距离计算选项。 有效项包括distanceFunctiondataTypesearchListSizeMultiplierquantizedVectorListMultiplierfilterPriority

返回类型

返回一个数值表达式,它用于枚举两个表达式之间的相似性分数。

例子

本部分包含有关如何使用此查询语言构造的示例。

在此示例中,函数 VECTORDISTANCE 用于返回文档向量和查询向量之间的相似性分数,同时按相似性分数排序。

SELECT c.id, c.name, VECTORDISTANCE(c.vector, [1,2,3]) AS SimilarityScore 
FROM c
ORDER BY VECTORDISTANCE(c.vector, [1,2,3])
[
  {
    "name": "document1",
    "SimilarityScore": 0.8923471786
  },
  {
    "name": "document2",
    "SimilarityScore": 0.7492739573
  }
]

在此示例中,VECTORDISTANCE 函数用于按相似性评分进行排序。 提供了可选参数来替代 dataType、指定更大的 searchListSizeMultiplier参数,并在“WHERE 子句”上指定 filterPriority 参数。

SELECT c.id, c.name
FROM c
WHERE c.Date >= "2025-09-30"
ORDER BY VectorDistance(c.embedding, [1, 2, 3], false, {dataType:'Float32', quantizedVectorListMultiplier:10, filterPriority: 0.75})

注解

  • 如果为vector_expr_1vector_expr_2提供多维数组,函数既不会返回SimilarityScore值,也不会返回错误。