NormalizeEmbedding

埋め込みベクトルを正規化します。次元引数を指定した場合、次元引数は正規化する前に使用するベクトル次元の数を減らします。

構文 

NormalizeEmbedding ( データ { ; 次元 } )

引数 

データ - 埋め込みベクトルを含む任意のテキスト式、テキストフィールド、またはオブジェクトフィールド。

次元 - 正規化に使用するベクトル次元の数。省略した場合、または値がベクトルの実際の次元サイズより大きいか 0 以下の場合、計算にベクトル次元サイズ全体が使用されます。

中カッコ { } 内の引数はオプションです。

戻り値のデータタイプ 

テキスト、オブジェクト

起点バージョン 

22.0

説明 

この関数は入力された埋め込みベクトルの正規化されたバージョンを返します。ベクトルの正規化とは長さ (大きさ) が 1 になるように値を変更することです。多くの場合、コサイン類似度のような計算を実行する前にこのステップが必要になります。ベクトルの大きさではなく、ベクトルの方向のみに基づいて類似度を測定するためです。

[データ] 引数がテキストの場合、浮動小数点数を含む JSON 配列の形式にする必要があります (例: [-0.1, 0.5, ...])。通常、バイナリオブジェクトデータとして埋め込みベクトルを使用するとパフォーマンスが向上します。

[次元] 引数を使用すると、指定した先頭の次元数のみに基づいてベクトルを正規化できます。[次元] を指定した場合、関数は最初の「次元」要素のみを使用して大きさを計算してから、その大きさに基づいて元のベクトル全体の大きさを変更します。正規化の前に [次元] 引数でベクトルが切り捨てられない限り、返されたベクトルは入力ベクトルと同じ次元数となります。

メモ 

  • ほとんどの埋め込みモデルはすでに正規化された (単位長) の埋め込みベクトルを生成します。このような場合はこれらのベクトルに対して NormalizeEmbedding を呼び出す必要はなく、元のベクトルが返されます。通常この関数は、正規化されたベクトルを出力しないモデルによって生成された埋め込みベクトルを使用する場合、またはベクトルの次元のサブセットに基づいて正規化する必要がある場合にのみ使用します。

  • オプションの [次元] 引数を使用すると、より大きなベクトルを先頭の次元数に基づいて比較可能性を維持しながら、より小さな固定サイズの表現で操作する場合に便利です。

例 1 

NormalizeEmbedding ("[3, 4]")[0.5999999999999999778, 0.800000000000000004441] を返しますが、説明のために約 [0.6, 0.8] とします。元のベクトル [3, 4] の長さは Sqrt(3^2 + 4^2) = 5 です。正規化されたベクトル [0.6, 0.8] の長さは Sqrt(0.6^2 + 0.8^2) = 1 です。

例 2 

NormalizeEmbedding (テーブル::埋め込みデータ; 256) は元のベクトルの最初の 256 次元のみを含み、長さが 1 になるように正規化された新しいベクトルを返します。埋め込みベクトルは「テーブル::埋め込みデータ」という名前のオブジェクトフィールドに格納されます。これは埋め込みモデルが大きなベクトルを生成しても、より小さい固定数の次元のみをコサイン類似度の計算に使用し、それらの次元を正規化する必要がある場合に便利です。