次の方法で共有


VECTOR_NORMALIZE(Transact-SQL)

適用対象: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL データベース

VECTOR_NORMALIZEを使用して、ベクトルを入力として受け取り、正規化されたベクトルを返します。これは、指定されたノルム型の長さが 1 にスケーリングされたベクトルです。

この標準化は、ベクターがビジュアル コンテンツ、テキスト情報、音声信号など、さまざまな形式のデータを表すさまざまな人工知能アプリケーションで重要です。 ベクトルを正規化することで、スケールの均一性が確保されます。これは、ベクター距離の測定やデータ ポイントのグループ化と区別に依存する操作に特に役立ちます。

Azure OpenAI のモデルでは正規化されたベクターが提供されますが、ベクターが自動的に正規化されないモデルやフレームワークは他にもあります。 たとえば、自然言語処理タスクに一般的に使用される Gensim ライブラリでは、ベクターが既定で常に正規化されるとは限りません。

多くの場合、ユーザーはベクターを手動で正規化するか、ライブラリによって提供される特定の関数を使用して、ベクトルが単位長であることを確認する必要があります。

一般に、機械学習モデルまたはベクター埋め込みでは、モデルのドキュメントまたは出力を確認して、ベクトルが正規化されているかどうかを判断することが重要です。 アプリケーションに正規化が必要な場合は、モデルで既定で正規化されたベクトルが提供されない場合は、別の手順として実装することが必要になる場合があります。

たとえば、ユークリッドノルム (最も一般的なノルム型) を使用して正規化されたベクトルが必要な場合は、次の値を使用できます。

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

Note

VECTOR_NORMALIZE は、SQL Server 2025 または Always-up-to-date更新ポリシーを使用して、Azure SQL Managed Instance で使用できます。

Syntax

Transact-SQL 構文表記規則

VECTOR_NORMALIZE ( vector , norm_type )

Arguments

ベクタ

ベクター データ型に評価される式。

norm_type

指定されたベクトルのノルムの計算に使用するノルム型の名前を持つ文字列。 次の標準型がサポートされています。

  • norm1 - 1-norm。ベクター コンポーネントの絶対値の合計です。
  • norm2 - 2-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');