コサイン類似度とは?

生成AI・エージェント

なぜ「長さ(量)」ではなく「方向」を見るのか

コサイン類似度(Cosine Similarity)とは、2つのベクトルがどれだけ同じ方向を向いているかを、ベクトルのなす角度のコサインを使って数値化する指標です。

一般的な定義では、値は-1〜1の範囲になります。完全に同じ方向なら1、直交していれば0、正反対なら-1です。

ここで重要なのは、ベクトルそのものの長さ(大きさ)よりも方向に着目する点です。

たとえば、地図上で2人が同じ方向を目指しているとします。1人は100m進み、もう1人は1km進んでいても、進んでいる方向が同じなら、コサイン類似度は高くなります。

つまり、コサイン類似度は「どれくらい遠くまで進んだか」ではなく、「どちらの方向を向いているか」を比較するイメージです。

コサイン類似度の比喩イラスト

AIでは「意味の近さ」を測るために使われる

コサイン類似度そのものが「意味」を理解しているわけではありません。文章などをEmbeddingモデルによってベクトル化したうえで、そのベクトルの方向を比較することで、意味的な類似性を評価することがあります。

  • 自然言語処理・検索: 「明かりをつけて」と「照明を点けて」のように表現が異なる文章でも、Embeddingによるベクトル表現が近ければ、高い類似度になる場合があります。
  • RAG・ベクトル検索: ユーザーの質問と文書をベクトル化し、コサイン類似度などを利用して、質問と意味的に近い文書を検索することがあります。
  • 画像検索: 画像から特徴を表すベクトルを作成し、ベクトル同士の類似度を計算することで、似た画像を検索する仕組みに利用されることがあります。

ユークリッド距離との違い

ベクトルの「近さ」を測る方法として、混同しやすいのがユークリッド距離(Euclidean Distance)です。

  • コサイン類似度: ベクトルの方向(角度)に着目します。ベクトルの長さそのものには影響されにくいのが特徴です。
  • ユークリッド距離: 2つのベクトルを空間上の2点と考え、2点間の直線距離を測ります。方向だけでなく、ベクトルの長さの違いも距離に影響します。

【イメージで理解する】

同じ方向に向かう2本の矢印を考えてみましょう。

短い矢印と長い矢印でも、向きが同じならコサイン類似度は1に近くなります

一方、ユークリッド距離では、矢印の先端の位置が離れていれば、その分だけ距離が大きくなります。

つまり、「方向の近さ」を見たいならコサイン類似度、「位置・距離の近さ」を見たいならユークリッド距離、という違いがあります。

試験・実務で押さえるべきポイント

AI資格試験やベクトル検索を理解するうえでは、まず以下を押さえておきましょう。

  • 同じ方向: コサイン類似度は1(なす角0°)
  • 直交: コサイン類似度は0(なす角90°)
  • 反対方向: コサイン類似度は-1(なす角180°)
  • 重要: コサイン類似度はベクトルの方向(角度)に着目する

試験の3大キーワード:
「方向(向き)」「角度」「ベクトルの長さに影響されにくい」

まとめ:「似ている」を“方向”で測る

コサイン類似度は、2つのベクトルがどれだけ同じ方向を向いているかを数値化する指標です。

Embeddingによって文章などをベクトル化すれば、そのベクトルの方向を比較することで、文章やデータの意味的な類似性を評価することができます。

覚え方は「コサイン=角度=方向」。
これだけ押さえておけば、ベクトル検索やRAGを理解するときにも役立ちます。

余談:なぜ「サイン」や「タンジェント」ではなく「コサイン」なの?

「角度を見るなら、sin(サイン)やtan(タンジェント)でもいいのでは?」と思うかもしれません。

数学的には角度からsin・cos・tanを計算できます。しかし、ベクトルの類似度を測る目的では、コサインが特に扱いやすいため、コサイン類似度が広く利用されています。

  • Cos(コサイン): 同じ方向なら1、直角なら0、反対方向なら-1。「方向がどれだけ一致しているか」を表現しやすい。
  • Sin(サイン): 0°でも180°でも0になるため、「同じ方向」と「反対方向」を区別できない
  • Tan(タンジェント): 90°で値が定義できず、90°付近では値が急激に大きくなるため、一般的な類似度指標としては扱いにくい。

そのため、三角関数の中でも「ベクトルの向きの近さ」を測る用途ではcos(コサイン)が特に適しています。

覚え方は、「コサイン類似度=ベクトルの方向の一致度」です。

コメント

タイトルとURLをコピーしました