エンベディング
何をする処理か
エンベディングとは、テキスト・画像・動画などのデータを、入力どうしの関係を捉えた数値表現にしたものである
— Google Cloud Generative AI glossary より和訳
ただ数値にするのではなく、「関係を捉えた」数値にするところが肝心です。 どんな数値でもよければ、文字コードに変換するだけで済みます。そうではありません。
同じ用語集は、何に変換されるのかを書いています。
エンベディングは、テキスト・画像・動画を、ベクトルと呼ばれる浮動小数点数の配列に変換することで、モデルの学習の段階で生成される
— Google Cloud Generative AI glossary より和訳
結果は数値の並び(ベクトル)です。 Microsoftの公式ドキュメントも「ベクトルの類似度検索に使われる、内容の数値表現」と短く定義しています。
「近さ」が意味の近さになります
ここがこの処理の価値です。
エンベディングは、データを連続的なベクトル空間に対応づけることでその要求に応える。その空間では、位置が近いことが、意味の似たデータであることを表す
— Google Cloud Generative AI glossary より和訳
位置が近い=意味が近いという性質があるので、「意味で探す」が計算でできるようになります。 文字が一致しなくても、「解約」と「退会」のように意味が近いものを拾えるのはこの性質によります。
Googleの用語集は、次元の話も添えています。「エンベディングはデータの次元を下げることが多く、それが計算の効率を高め、大きなデータセットの処理を可能にする」。
どこで使われているか
1. LLMの中で
たとえば大規模言語モデル(LLM)は、テキストの文脈と意味を捉えるためにエンベディングに依っている
— Google Cloud Generative AI glossary より和訳
LLMが文章を扱うときの土台になっています。マルチモーダルの入力も、ここで同じ形に揃えられます。「エンベディングの手法は、マルチモーダルの入力を、モデルがトークンとして処理できる数値表現に変換する」と書かれています。
2. 画像生成で
「画像生成では、エンベディングが画像の視覚的な特徴を捉え、それによってモデルは現実的で多様な出力を作れるようになる」。
3. RAGの検索で
ここが実務で一番関わる場面です。
検索拡張生成(RAG)を使うシステムは、利用者の問いを関連する知識に対応づけるためにエンベディングに依っている
— Google Cloud Generative AI glossary より和訳
手順まで書かれています。
問いが投げられると、それはエンベディングに変換され、知識ベースの中にある文書のエンベディングと比較される
— Google Cloud Generative AI glossary より和訳
この比較はベクトル空間での類似度検索によって行われ、それによってシステムは意味の上で最も関連する情報を取り出せる
— Google Cloud Generative AI glossary より和訳
AWSの解説も同じ流れで、「データを数値表現に変換し、それをベクトルデータベースに格納する」と書いています。 格納先がベクトルデータベースで、検索の仕組みがRAGです。
地図の座標を振る作業です。
住所の文字列を見比べても近さは分かりませんが、緯度と経度に直せば距離が計算できます。 エンベディングは、文章や画像に「意味の座標」を振って、距離が測れる状態にする処理です。
ただし座標が何次元で、各次元が何を表しているのかは、人が指定したものではありません。 学習の過程で決まるので、1つ1つの数値に人が読める意味はありません。
こう言えば一度で済む
こう言うと伝わらない 「社内文書を検索できるようにしたいです」
こう言えば一度で済む 「表記が揺れていても拾いたいです。『解約』で検索して『退会』と書かれた文書も出るようにできますか」
後者なら、相手は全文検索ではなくエンベディングを使った検索の話だと判断できます。