エンベディングの魔法
エンベディングは言語を数学へと変換します。
それらは現代のAIの基盤です。多くの人々はそれらをブラックボックスのように扱っていますが、この記事ではその仕組みを解説します。
キーワード検索は、単語が一致しない場合に失敗します。
例えば、「How do I reset my password?(パスワードをリセットするにはどうすればいいですか?)」と検索した場合、キーワード検索はその通りの正確な単語を探します。もしドキュメントに「Steps to recover your account credentials(アカウントの認証情報を復元する手順)」と書かれていた場合、検索は失敗するかもしれません。人間は意味が同じだと分かりますが、コンピュータには分かりません。
エンベディングはこの問題を解決します。
エンベディングとは数値のリストです。これらの数値はテキストの意味を表します。エンベディングモデルは、単語を高次元空間にマッピングします。
「cat(猫)」のような単語一つが、次のようなベクトルになります: [0.18, -0.42, 0.91, ...]
数値そのものには意味がありません。重要なのはベクトルの位置です。
地図を想像してみてください。近くにある都市同士は、似たような気候や国境を共有しています。エンベディングも同じように機能します。似た意味を持つテキストは、ベクトル空間内で互いに近くに配置されます。
- 「Dog(犬)」と「Cat(猫)」は近くに配置されます。
- 「Car(車)」と「Truck(トラック)」は近くに配置されます。
- 「Car(車)」と「Dog(犬)」は遠くに配置されます。
これらの点の間隔が、類似性を表します。
これにより、セマンティック検索(意味検索)が可能になります。綴りではなく、意図に基づいて情報を探すことができます。
これらのベクトルを比較するために、コサイン類似度を使用します。この指標は、2つのベクトル間の角度を測定します。
- 角度が小さいほど、類似度が高いことを意味します。
- 角度が大きいほど、類似度が低いことを意味します。
エンベディングは、Retrieval Augmented Generation (RAG) の原動力でもあります。RAGパイプラインにおけるプロセスは以下の通りです:
- エンベディングモデルを使用して、ドキュメントをベクトルに変換する。
- ベクトルをベクトルデータベースに保存する。
- ユーザーのクエリをベクトルに変換する。
- データベース内で最も近いベクトルを見つける。
- 関連するドキュメントをLLMに送信する。
LLMはファイルを直接検索するわけではありません。エンベディング空間内で最も近い一致箇所を検索します。
AIアプリケーションを構築するのであれば、エンベディングを理解しておく必要があります。検索エンジンからレコメンデーションシステムに至るまで、あらゆるものの基盤となっているからです。その強みは、意味をどのように整理するかという点にあります。
Source: https://dev.to/tahaboussaden/embeddings-magic-2hlb
Optional learning community: https://t.me/GyaanSetuAi
