エンベディングはAIやベクトルアプリケーションを構築する際の中心的な概念で、テキスト、画像、ビデオなどの情報の「関連性」を捉えます。これは検索、推奨、分類、クラスタリングなどに使われます。エンベディングは、異なる単語や記号を連続的なベクトルデータに圧縮し、それらの間の類似性を計算することが可能になります。これは、検索などの用途に役立ちます。
エンベディングとは、情報の「関連性」を捉える手法のことを指します。例えば、”The cat chases the mouse(猫がネズミを追いかける)”と”The kitten hunts rodents(子猫がネズミを狩る)”という2つのフレーズがあったとき、人間はこれらが似た意味を持っていると理解できますが、コンピュータにはそれが自明ではありません。エンベディングは、このようなフレーズの意味の「近さ」を数値化することで、コンピュータに理解させる手法です。
エンベディングは、単語や記号といった離散的な情報を、連続的なベクトルデータに変換します。これを図にプロットすると、意味が近いフレーズは近くに、遠いフレーズは遠くにプロットされます。これにより、フレーズ間の意味の「距離」を計算することが可能になります。
このエンベディングは、検索などの用途に使われます。例えば、あらかじめ知識ベース全体のエンベディングを生成し、それを保存しておきます。そして、ユーザーからの入力を受け取り、そのエンベディングを一度だけ生成します。その後、この一時的なエンベディングと、あらかじめ生成しておいたエンベディングとの間で類似性検索を行い、最も類似したページをユーザーに返します。
これは、例えば、本棚にある本全てを読んで、それぞれの本の内容を一つのベクトル(数字のリスト)に変換し、それを本棚に戻すようなものです。そして、新たに本を手に入れたとき、その本も同じようにベクトルに変換し、それが本棚のどの本と最も近いか(つまり、内容が最も似ているか)を計算することで、その本がどのような内容の本なのかを推測することができます。これがエンベディングを使った検索の一例です。
また、エンベディングは通常、多次元のデータとして出力されます。例えば、OpenAIのtext-embedding-ada-002モデルは1536次元のデータを出力します。これは、人間の言語の複雑さを捉えるために必要な次元数で、2次元の図では表現しきれない情報を含んでいます。
このように、エンベディングは、人間の言語を理解し、それを数値化するための強力なツールです。これにより、コンピュータは人間の言語を理解し、それに基づいた処理を行うことが可能になります。