适用于:SQL Server 2025(17.x) 预览版
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 预览版中的 SQL 数据库
用于 VECTOR_NORMALIZE 将向量作为输入并返回规范化向量,该向量缩放为给定 规范类型中的长度为 1。
这种标准化对于各种人工智能应用程序至关重要,其中矢量表示不同形式的数据,例如视觉内容、文本信息或音频信号。 通过规范化向量,我们确保其比例的统一性,这对于依赖于测量矢量距离或分组和区分数据点的操作特别有用。
虽然 Azure OpenAI 的模型提供规范化向量,但还有其他模型和框架,其中矢量不会自动规范化。 例如,在通常用于自然语言处理任务的 Gensim 库中,默认情况下不会始终规范化向量。
用户通常需要手动规范化向量或使用库提供的特定函数,以确保向量具有单位长度。
通常,对于机器学习模型或矢量嵌入,请务必检查文档或模型的输出,以确定矢量是否规范化。 如果应用程序需要规范化,则默认情况下模型不提供规范化向量时,可能需要将其实现为单独的步骤。
例如,如果想要使用 Euclidean 规范(这是最常见的规范类型)的规范化向量,可以使用:
SELECT VECTOR_NORMALIZE ( vector, 'norm2' )
FROM ...
Note
VECTOR_NORMALIZE 在具有 SQL Server 2025 或 Always-up-to-date更新策略的 Azure SQL 托管实例中可用。
Syntax
VECTOR_NORMALIZE ( vector , norm_type )
Arguments
向量
计算结果为 向量 数据类型的表达式。
norm_type
一个字符串,其名称为用于计算给定向量的规范类型。 支持以下规范类型:
-
norm11-norm- 这是矢量组件的绝对值之和。 -
norm2- 也称为2-normEuclidean Norm,它是矢量分量平方和的平方根。 -
norminf- 无穷大规范,它是矢量组件的绝对值的最大。
返回值
结果是一个向量,其方向与输入向量相同,但长度为 1(根据给定的规范)。
如果输入为 NULL,则返回的结果也是 NULL。
如果 norm_type 不是有效的规范类型,并且 矢量 不是 矢量 数据类型,则返回错误。
Examples
示例 1
规范化向量:
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_NORMALIZE(v, 'norm2') AS nv
FROM dbo.vectors;
示例 2
DECLARE @v AS VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'),
VECTOR_NORMALIZE(@v, 'norminf');