BigQuery でベクトル間のコサインを計算する関数を作成します。
■関数定義
dataset.vector_length() は「BigQuery でベクトルの長さを計算する関数を作成」で定義しています。
■実行例
実行結果
■関数定義
create or replace function dataset.vector_cosine(v1 array<float64>, v2 array<float64>) returns float64 as ( (select sum(e1 * e2) from unnest(v1) as e1 with offset idx1 inner join unnest(v2) as e2 with offset idx2 on idx1 = idx2 ) / (dataset.vector_length(v1) * dataset.vector_length(v2)) );
dataset.vector_length() は「BigQuery でベクトルの長さを計算する関数を作成」で定義しています。
■実行例
select dataset.vector_cosine([1.0, 2.0, 3.0, 4.0], [4.0, 3.0, 2.0, 1.0]);
実行結果
[{ "f0_": "0.66666666666666663" }]