VECTOR_DOT_PRODUCT (SQL)
構文
VECTOR_DOT_PRODUCT(vec1, vec2)
説明
VECTOR_DOT_PRODUCT 関数は、2 つの入力ベクトルのドット積を求めます。これらのベクトルは、integer、double、decimal のいずれかの数値型である必要があります。結果は、double として表されたドット積の値で、2 つのベクトル間の類似度を判断する場合に役立ちます。
2 つのベクトルのドット積は、2 つの入力ベクトルの同じ位置にある要素の各ペアの積の合計です。この計算式は以下のように表されます。
![generated description: dot product calc](images/vector_dot_product_calc.png)
これらの入力ベクトルが単位ベクトルの場合、ドット積は 2 つのベクトル間の角度のコサインと同じ値になります。ドット積が大きいほど、ベクトルの類似度が高くなります。この計算は、VECTOR 型の効率性を利用しているため、単位ベクトルに対して演算を行う場合は、この関数を使用することをお勧めします。
単位ベクトルではない 2 つのベクトル間の類似度を求める場合は、VECTOR_COSINE 関数を使用します。
引数
vec1、vec2
同じ数値型の 2 つのベクトル。これらのベクトルが異なる数値型の場合、この関数は SQLCODE -259 で失敗します。
String など、数値型ではないベクトルを指定した場合、この関数は SQLCODE -258 で失敗します。
2 つのベクトルは同じ長さである必要があります。これら 2 つのベクトルの長さが異なる場合、SQLCODE -257 エラーが返されます。
例
以下の例では、2 つの integer 型のベクトルに VECTOR_DOT_PRODUCT を使用しています。
SELECT VECTOR_DOT_PRODUCT(TO_VECTOR('6,4,5',integer), TO_VECTOR('1,4,3',integer))
以下の例では、VECTOR_DOT_PRODUCT 関数を使用して、各行に格納されているベクトルと入力ベクトル間の類似度に基づいて、結果に最も類似する説明テキストを返します。実際には、埋め込みベクトルには 3 つより多くの要素がありますが、この例では簡潔にするために、埋め込みベクトルを 3 つの要素を持つものとして表しています。
SELECT TOP 5 Description FROM Sample.DescAndEmbedding emb
ORDER BY VECTOR_COSINE(Embedding,TO_VECTOR('1,1,1',double)) DESC