dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

BigQuery でベクトル間のコサインを計算する関数を作成

2023-12-03 13:10:47 | BigQuery
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"
}]


この記事についてブログを書く
« BigQuery でベクトルを正規化... | トップ | BigQuery でベクトルの長さを... »

BigQuery」カテゴリの最新記事