VECTOR_COSINE (SQL)
2 つのベクトル間のコサイン類似度を求め、結果を返します。
構文
VECTOR_COSINE(vec1, vec2)
説明
VECTOR_COSINE 関数は、2 つの入力ベクトルのコサイン類似度を求めます。これらのベクトルは、integer、double、decimal のいずれかの数値型である必要があります。結果は、これらの間のコサインの値で、-1 ~ 1 の double として表されます。この値は、2 つのベクトルのドット積を 2 つのベクトルの長さの積で除算した値として計算されます。この式は以下のように表されます。
コサイン類似度は、2 つのベクトルの類似度の指標の 1 つです。コサイン類似度が正の場合、2 つのベクトルは類似していると見なされます。コサイン類似度が負の場合、2 つのベクトルは類似していないと見なされます。
引数
vec1、vec2
同じ数値型で同じ長さの 2 つのベクトル。これらのベクトルが異なる数値型の場合、この関数は SQLCODE -259 で失敗します。
string など、数値型ではないベクトルを指定した場合、この関数は SQLCODE -258 で失敗します。
これら 2 つのベクトルの長さが異なる場合、この関数は SQLCODE -257 エラーで失敗します。
例
以下の例では、2 つの integer 型のベクトルに VECTOR_COSINE 関数を使用しています。
SELECT VECTOR_COSINE(TO_VECTOR('6,4,5',integer), TO_VECTOR('1,4,3',integer))
以下の例では、VECTOR_COSINE 関数を使用して、各行に格納されているベクトルと入力ベクトル間の類似度に基づいて、結果に最も類似する説明テキストを返します。実際には、埋め込みベクトルには 3 つより多くの要素がありますが、この例では簡潔にするために、埋め込みベクトルを 3 つの要素を持つものとして表しています。
SELECT TOP 5 Description FROM Sample.DescAndEmbedding emb
ORDER BY VECTOR_COSINE(Embedding,TO_VECTOR('0.3,0.4,0.6',double)) DESC