Embeddingと類似度計算(コサイン類似度など)

RAG(Retrieval-Augmented Generation)の「Retrieverの理論と技術」において、「Embeddingと類似度計算」は文書検索の中核をなす重要な技術です。このセクションでは、Embedding(埋め込み表現)とコサイン類似度などの類似度計算手法について詳しく解説します。


1. Embedding(埋め込み表現)とは

Embeddingとは、テキストなどの離散的な情報を、計算機で扱いやすい連続的なベクトル空間に変換する技術です。Retrieverでは、クエリや文書をこのベクトル空間上にマッピングし、類似度に基づいて最も関連する文書を検索します。

主な特徴

  • 各文書やクエリを固定次元のベクトルに変換

  • ベクトルの意味的な位置関係が、元のテキストの意味的な近さを反映

  • **事前学習済みモデル(例:BERT, Sentence-BERT, DPR)**を使って生成されることが多い

  • 「東京」と「日本の首都」は意味的に近いため、Embeddingベクトルも近くに配置される


2. 類似度計算の目的

Embeddingされたクエリと文書間で、どれだけ意味的に似ているかを計算することで、適切な文書を検索します。これを実現するために、類似度関数が用いられます。


3. 主な類似度計算手法

(1)コサイン類似度(Cosine Similarity)

定義:
2つのベクトルのなす角のコサイン値を用いて類似度を計算します。

数式:

cosine_similarity(A,B)=ABAB\text{cosine\_similarity}(A, B) = \frac{A \cdot B}{\|A\| \|B\|}

  • 値域は [-1, 1]

  • 1に近いほど高い類似性を示す(角度が小さい)

利点:

  • ベクトルの大きさ(ノルム)ではなく、向きに注目するため、正規化に強い

  • 実装が簡便で多くの検索エンジンに採用されている


(2)ユークリッド距離(Euclidean Distance)

定義:
2つのベクトルの距離を幾何学的に計算します。

distance(A,B)=i(AiBi)2\text{distance}(A, B) = \sqrt{\sum_i (A_i – B_i)^2}

  • 値が小さいほど類似度が高いと解釈される

  • ベクトルの絶対的な位置に敏感


(3)内積(Dot Product)

AB=iAiBiA \cdot B = \sum_i A_i B_i

  • 特にベクトルが正規化されていない場合に使われる

  • 深層学習モデル(例:DPR)ではしばしばこの方法が使われる


4. Embeddingと類似度計算の関係

Retrieverは以下の流れで検索を行います:

  1. クエリと文書をベクトルに変換(Embedding)

  2. クエリベクトルと各文書ベクトルの類似度を計算

  3. 類似度の高い順に文書をランク付け・取得


5. 応用例:DPR(Dense Passage Retriever)

  • クエリと文書を別々のエンコーダーでEmbedding

  • 類似度計算には内積またはコサイン類似度を使用

  • 学習時には、正例と負例を使って、Embedding空間上で正しい文書がクエリに近づくよう最適化される


まとめ

項目 内容
Embedding クエリ・文書を意味的なベクトルに変換する手法
類似度計算 ベクトル間の意味的近さを測る手法(例:コサイン類似度)
主な手法 コサイン類似度、ユークリッド距離、内積など
目的 適切な文書を高精度で検索するための基礎技術

生成日:2025/06/07