エンベディングとは何か
「エンベディング(Embedding)」は、テキスト・画像・音声といったデータを「数値のリスト(ベクトル)」に変換する技術だ。日本語では「埋め込みベクトル」とも呼ばれる。
例えば「犬」というテキストをエンベディングすると、[0.12, -0.45, 0.87, ...] のような数百〜数千次元のベクトルになる。このベクトルの特徴は、意味的に近い単語やテキストほど、ベクトル空間でも近い場所に配置されることだ。
「犬」と「猫」のベクトルは近く、「犬」と「自動車」のベクトルは遠い——こうした意味的な関係を数値として表現できるのが、エンベディングの本質的な価値だ。
なぜエンベディングが必要か
コンピュータは文字列を直接比較することはできるが、「意味的な類似度」を計算することはできない。「自動車」と「車」は別の文字列だが意味は同じで、「銀行(金融機関)」と「銀行(川岸)」は同じ文字列でも意味が異なる。
エンベディングを使えば、こうした意味的な関係を数値で表現できる。そして数値であれば、内積やコサイン類似度といった計算で、テキスト間の意味的な近さを定量的に測れる。
どう作られるか
ニューラルネットワークによる学習
エンベディングはニューラルネットワークの学習プロセスで生成される。大量のテキストデータを使って、「前後に現れる単語が似ているものは意味が近い」という前提のもとで学習する。
単語レベルのWord2VecやGloVeから始まり、現在はTransformerベースのモデル(BERTやその後継)が文全体・段落全体をベクトルに変換する「文エンベディング」が主流だ。
OpenAI Embeddings API
OpenAIが提供するtext-embedding-3-smallやtext-embedding-3-largeは、テキストを1536次元または3072次元のベクトルに変換するAPIだ。APIにテキストを投げるだけでベクトルが返ってくるため、エンベディングモデルを自前で動かす必要がない。コストも低く、実務での利用例が多い。
Cohereや日本語対応モデル
Cohereも高品質なエンベディングAPIを提供している。日本語テキストを処理する場合、日本語コーパスで学習したモデルを選ぶと精度が上がる。オープンソースではmultilingual-e5やintfloat/multilingual-e5-largeが日本語を含む多言語に対応しており、Hugging Faceから利用できる。
テキスト類似検索への応用
セマンティック検索
エンベディングを使った検索を「セマンティック検索(意味検索)」と呼ぶ。検索クエリをベクトルに変換し、データベース内のドキュメントベクトルとのコサイン類似度を計算して近いものを上位表示する。
キーワード検索では「Python 機械学習」を検索しても「Pythonによるデータサイエンス入門」は引っかからないことがあるが、セマンティック検索では意味的な近さで検索できるため、よりユーザーの意図に沿った結果が得られる。
重複検出とクラスタリング
エンベディングは重複コンテンツの検出にも使える。完全に同じ文章でなくても、意味的に同じ内容であればベクトルが近くなるため、類似度の閾値を設けることで「ほぼ同じ内容」のドキュメントを見つけられる。
また、大量のテキストをクラスタリングして、似たトピックのドキュメントをグループ化するといった使い方も一般的だ。
RAGにおけるエンベディングの役割
ドキュメントのインデックス化
RAG(Retrieval-Augmented Generation)システムでは、エンベディングが中心的な役割を担う。まず、知識ベースとなるドキュメントをチャンク(小さな断片)に分割し、それぞれをエンベディングしてベクトルデータベースに保存する。これが「インデックス化」の工程だ。
検索と生成の橋渡し
ユーザーが質問を入力すると、その質問もエンベディングしてベクトルに変換する。次に、そのベクトルと近い(= 意味的に関連する)ドキュメントチャンクをベクトルデータベースから取り出す。最後に、取り出したチャンクをコンテキストとしてLLMに渡し、回答を生成させる。
この流れで、LLMが学習していない社内文書や最新情報に基づいた回答を生成できる。エンベディングの品質がRAGシステム全体の精度に直結するため、エンベディングモデルの選択は重要な設計判断だ。
エンベディングの次元数とコスト
次元数が高いほどより豊かな意味表現が可能になるが、保存コストと計算コストも増える。text-embedding-3-small(1536次元)はtext-embedding-3-large(3072次元)より低コストで、多くのユースケースで十分な精度が出る。大規模なシステムでは次元削減(MatryoshkaエンベディングやPCAなど)でコストを抑える手法もある。
まとめ
エンベディングはテキストを意味を保ったまま数値ベクトルに変換する技術で、意味的な類似検索・重複検出・RAGシステムなど多様な用途に使われる。OpenAIやCohereのAPIを使えば、エンベディングモデルを自前で管理せずに高品質なベクトルを取得できる。RAGの精度を高めるためにはエンベディングモデルの選択が重要で、用途と予算に合わせた選び方が求められる。