CLOVER🍀

That was when it all began.

ベクトル検索で使う類似度の比較方法について

これは、なにをしたくて書いたもの?

ベクトルデータベースというかベクトル検索を扱うと、検索で使う類似度の比較方法の指定を求められます。

どういう時になにを選んだらいいのか全然わからないのですが、少しヒントになりそうな情報をまとめておこうかなと。

ざっくりまとめ?

ベクトル検索でよく出てくる類似度の比較方法。

  • ユークリッド距離
    • 2つのベクトル間の直線距離を測定
    • 直線距離が少ないほど似ているということになる
  • コサイン類似度
    • 2つのベクトル間の角度のコサインを測定して判定
    • 同じ向き(0度)に近づくと似ている、90度のように直交すると無関係、180度に近づくほど似ていないと判定される
  • ドット積
    • 正規化されたベクトルに対して、2つのベクトル間の角度のコサインを測定して判定したもの
  • 最大内積
    • 2つのベクトルの内積をとる
    • 内積の値が大きければ似ているということになる

参考

5-11. レコメンドシステムではなぜユークリッド距離ではなくコサイン類似度が用いられるのか | Vignette & Clarity(ビネット&クラリティ)

コサイン類似度(Cosine Similarity)とは?:AI・機械学習の用語辞典 - @IT

Vector Search:4つのベクトル検索アルゴリズム:コサイン類似度、ユークリッド距離、マンハッタン距離、負の内部積(スカラー積)

ベクトルデータベースとは何ですか?|包括的なベクトルデータベースのガイド | Elastic

【院生が徹底解説】ChatGPTのベクトルデータベースとは? | WEEL

個人的には九州大学が公開している資料がわかりやすかったと思います。

講義資料 – 九州大学 数理・データサイエンス教育研究センター

データサイエンス概論I&II / データ間の距離と類似度

情報科学 【AI・データサイエンス 】 / 第5回 ベクトル・距離・類似度

ここの例えから先が特に。

また、その後で5-11. レコメンドシステムではなぜユークリッド距離ではなくコサイン類似度が用いられるのか | Vignette & Clarity(ビネット&クラリティ)にある画像と内容を見ると、よりイメージしやすかったです。

さて、ユーザーAは「PCパーツに興味があるヘビーユーザー」、ユーザーBは「PCパーツに興味があるライトユーザー」、ユーザーCは「Tシャツに興味があるライトユーザー」と解釈できます。

ここでユーザーBにレコメンドする商品は何が良いでしょうか?

とはいえ

各類似度の比較方法の考え方はざっくりわかったのですが、結局のところあるデータをベクトル化した際にどんなベクトルになるのか、
そしてそのベクトルはどういう考え方で比較するのが対象の文脈において適切なのかがわからないと、類似度の比較方法なんて選べないと
いうことですね。

それはそうですね、という感じではありますが…。