エンベディング(ベクトル化)
テキストや画像などのデータを、意味を保持した数値ベクトル(数値の配列)に変換する技術。類似度検索やRAGの基盤。
エンベディングとは
エンベディング(Embedding)とは、テキスト、画像、音声などのデータを、その「意味」を反映した数値ベクトル(数値の配列)に変換する技術です。日本語では「埋め込み」や「ベクトル化」とも呼ばれます。
たとえば、「犬」というテキストは [0.12, -0.34, 0.56, ...] のような数百〜数千次元のベクトルに変換されます。「猫」は [0.15, -0.31, 0.52, ...] のように、意味的に近い概念は近いベクトルになります。一方、「自動車」は [0.78, 0.23, -0.41, ...] のように、意味的に遠い概念は離れたベクトルになります。
人間は「犬と猫は似ている」と直感的にわかりますが、コンピュータにとって文字列としての「犬」と「猫」はまったく別の記号です。エンベディングは、この「意味の類似性」をコンピュータが扱える数値の世界で表現する技術です。
なぜエンベディングが重要なのか
エンベディングが注目されるようになった最大の理由は、RAG(検索拡張生成)の普及です。RAGでは、ユーザーの質問に関連するドキュメントをベクトルデータベースから検索する必要があります。この「意味的に近いドキュメントを見つける」という処理が、エンベディングなしには実現できません。
従来のキーワード検索では、「売上が伸び悩んでいる」という質問に対して「収益が低迷している」というドキュメントはヒットしません。キーワードが一致していないからです。しかし、エンベディングによるベクトル検索(セマンティック検索)なら、意味的に近い文章を発見できます。これは特に、社内ドキュメント検索のような「同じ概念をさまざまな表現で書いている」データに対して威力を発揮します。
エンベディングの仕組み
エンベディングモデルは、大量のテキストデータで学習されたニューラルネットワークです。入力されたテキストを読み込み、その意味を捉えた固定長のベクトルを出力します。
代表的なエンベディングモデル
OpenAI text-embedding-3-small / large: OpenAIが提供するエンベディングモデル。APIで簡単に利用可能。smallは1536次元、largeは3072次元のベクトルを生成。コストパフォーマンスが高く、最も広く使われています。
Cohere Embed v3: 多言語対応に優れたエンベディングモデル。日本語の精度も高いと評価されています。
オープンソースモデル: BGE、E5、Multilingual-E5など、Hugging Face上で公開されているモデル。自社サーバーで動かせるため、データを外部に送信したくない場合に選択肢になります。
ベクトルデータベースとは
エンベディングで生成したベクトルを保存し、高速に類似度検索を行うのがベクトルデータベースです。数百万件、数千万件のベクトルの中から、クエリに最も近いベクトルをミリ秒単位で見つけ出します。
代表的なベクトルデータベースには、Pinecone(マネージドサービス、運用が楽)、Weaviate(オープンソース、多機能)、Qdrant(オープンソース、高速)、pgvector(PostgreSQLの拡張、既存DBに追加可能)などがあります。
類似度の計算方法
2つのベクトルがどれだけ「近い」かを測る方法はいくつかあります。
コサイン類似度: 最も一般的。2つのベクトルの角度の近さを測る。-1から1の値を取り、1に近いほど類似している。テキストのエンベディングではほぼこれが使われます。
ユークリッド距離: 2点間の直線距離。値が小さいほど近い。画像のエンベディングなどで使われることがあります。
内積(ドット積): コサイン類似度に似ていますが、ベクトルの大きさも考慮する。
実務での活用パターン
RAG(検索拡張生成)
最も一般的な活用パターンです。社内ドキュメントをエンベディングしてベクトルデータベースに格納し、ユーザーの質問に関連するドキュメントを検索してLLMの回答に使います。セマンティック検索
ECサイトの商品検索や、社内ナレッジの検索に活用。「夏にぴったりの爽やかなワイン」のような曖昧な検索でも、意味的に合致する商品を提示できます。レコメンデーション
ユーザーの閲覧履歴や購買履歴をエンベディングし、類似した嗜好を持つユーザーや関連商品を推薦する。異常検知
正常なデータのエンベディングを学習し、そこから大きく離れたベクトルを異常として検出する。導入時の注意点
エンベディングモデルの選択は、プロジェクトの成否を左右する重要な判断です。日本語の精度、ベクトルの次元数、処理速度、コスト——これらのバランスを考慮して選ぶ必要があります。また、チャンクの分割方法(ドキュメントをどの単位で区切るか)も検索精度に大きく影響します。短すぎると文脈が失われ、長すぎると関係ない情報が混じる。この調整が、RAGの品質を決めると言っても過言ではありません。
関連サービス
Swaaabでは、エンベディングを活用したRAGシステムやセマンティック検索の構築を支援しています。