次の方法で共有


VECTOR_NORMALIZE (Transact-SQL) (プレビュー)

適用対象:Azure SQL Database

Note

このデータ型はプレビュー段階であり、変更される可能性があります。 Online Services のサービス レベル アグリーメント (SLA) ドキュメントで、プレビューの使用条件をお読みください。

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

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

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

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

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

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

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

構文

Transact-SQL 構文表記規則

VECTOR_NORMALIZE ( vector_column, norm_type )

引数

vector_column

ベクターに評価される式。 この列は、 vector データ型である必要があります。

norm_type

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

  • norm1 - 1 ノルム。ベクトル 成分の絶対値の合計です。
  • norm2 - ベクトル成分の平方和の平方根であるユークリッドノルムとも呼ばれる2ノルム。
  • norminf - 無限ノルム。これはベクトル成分の絶対値の最大値です。

戻り値

結果は、入力ベクトルと同じ方向を持ち、指定されたノルムに従って長さが 1 のベクトルになります。

入力が NULL場合、返される結果も NULLされます。

norm_typeが有効なノルム型でない場合、およびvector_columnベクトルデータ型でない場合は、エラー返されます。

例 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 VECTOR(3) = '[1, 2, 3]';

SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');