VECTOR_NORM (Transact-SQL) (预览版)

适用于:Azure SQL 数据库

注意

该数据类型为预览版,可能会发生变化。 请务必阅读联机服务的服务级别协议 (SLA) 文档中的预览版使用条款。

采用向量作为输入,并在给定 的规范类型中返回向量(这是其长度或数量级的度量值)。

例如,如果要计算 Euclidean norm(这是最常见的规范类型),可以使用:

SELECT VECTOR_NORM ( vector, 'norm2' )
FROM ...

语法

Transact-SQL 语法约定

VECTOR_NORM ( vector, norm_type )

参数

向量

计算结果为 向量 数据类型的表达式。

norm_type

一个字符串,其名称为用于计算给定向量的规范类型。 支持以下规范类型:

  • norm1 - 1-norm,它是矢量组件的绝对值之和。
  • norm2 - 2-norm,也称为 Euclidean Norm,它是矢量分量平方和的平方根。
  • norminf - 无穷大规范,它是矢量组件的绝对值的最大。

返回值

该函数返回一个 浮点 值,该值代表使用指定的规范类型表示向量的规范。

如果 norm_type 不是有效的规范类型,并且矢量不是 矢量数据类型,则返回错误。

示例

示例 1

以下示例使用 JSON 数组从字符串创建具有三个维度的向量。

DECLARE @v VECTOR(3) = '[1, 2, 3]';

SELECT 
    vector_norm(@v, 'norm2') AS norm2,
    vector_norm(@v, 'norm1') AS norm1,
    vector_norm(@v, 'norminf') AS norminf;

预期的返回值为:

norm2 norm1 norminf
3.7416573867739413 6.0 3.0

示例 2

以下示例计算表中每个向量的规范。

CREATE TABLE dbo.vectors
(
  ID INT PRIMARY KEY,
  v VECTOR(3) NOT NULL
);

INSERT INTO dbo.vectors (ID, v) VALUES 
(1, '[0.1, -2, 42]'),
(2, '[2, 0.1, -42]');

SELECT 
  ID, 
  VECTOR_NORM(v, 'norm2') AS norm 
FROM 
  dbo.vectors;