📖

Embedding とは?

埋め込みとは、データ(主にテキストですが、画像・音声・ユーザーの行動なども)を高次元空間上の点(実数のベクトル)として数値で表現したものです。これにより意味的に類似した項目が近くに配置されます。埋め込みによって機械学習モデルは類似度を測定したり、

埋め込み(Embedding)とは、単語・文章・画像・音声クリップ、あるいはユーザーのクリック履歴などの情報を、ベクトルと呼ばれる数値のリストに変換する手法です。このリストは通常数百から数千の数値で構成され、各数値は入力の何らかの特徴を捉えた学習済みの値です。重要なのは、意味が似た項目は似たベクトルに、無関係な項目は遠く離れたベクトルになるようにモデルが学習されるという点です。

あらゆる入力が同じ数学的空間上の点に変換されるため、コンピュータは文字の一致ではなく、意味同士の加算・減算・距離測定を初めて可能にします。これが、埋め込みが現代のセマンティック検索、検索拡張生成(RAG)、推薦システム、クラスタリング、分類の基盤となっている理由です。

埋め込みの仕組み

内部的には、埋め込みはエンコーダーと呼ばれるニューラルネットワークによって生成されます。学習中、モデルは膨大なデータを処理し、類似した文脈で現れる入力(たとえばkingqueen、またはゴールデンレトリバーの写真と「yellow dog」というキャプションなど)が似た方向を向くベクトルに対応付けられるように重みを調整します。結果として得られる座標は人手で作られたものではなく、近隣単語・マスクされた単語・関連項目の予測というモデルの目的から自然に生まれるものです。

直感的なイメージとしては、単語の3次元地図を思い浮かべてください。学習後、kingqueenprinceprincessが1つのクラスターを形成し、catdoghamsterが別のクラスターを形成し、happyjoyfulelatedがさらに別のクラスターを形成します。実際の埋め込みはもっと高次元(多くは768、1,536、3,072次元)に存在しますが、原理は同じです。ベクトル空間上の近さは意味的な類似性に対応し、通常はコサイン類似度やユークリッド距離で測定されます。学習方法について詳しくは、Mikolov氏らの原著word2vec論文や、OpenAIの埋め込みガイドをご覧ください。

埋め込みが重要な理由

埋め込みは、煩雑で非構造化なデータを、アルゴリズムが効率的に推論できる形式に変換します。検索エンジンはキーワードの完全一致ではなく意味によって文書をランク付けできるため、「how to fix a leaky faucet」というクエリが「repairing a dripping tap」というタイトルの記事にもマッチします。推薦システムは、カタログに共通タグがなくても、ユーザーが閲覧中の商品に似た商品を見つけられます。また検索拡張生成(RAG)では、LLMがユーザーの質問に最も近い埋め込みを持つチャンクを検索することで、独自文書や最新文書に基づいた回答を生成できます。

同じ仕組みは画像(CLIP系モデル)、音声、コード、構造化レコードにも有効であり、だからこそ埋め込みはデータとAIの間の普遍的な交換フォーマットとなっています。

埋め込みの主な種類

  • 単語埋め込み — word2vecやGloVeのように、単語ごとに固定ベクトルを持たせる方式。
  • 文章・文書埋め込み — 文章ごとに1つのベクトルを生成し、Sentence-BERTやOpenAIのtext-embedding-3などが代表的。
  • 画像埋め込み — CLIP、ResNet、DINOv2などのビジョンエンコーダーからのベクトルで、モーダル横断検索を可能にする。
  • マルチモーダル埋め込み — テキスト・画像・音声が同じ空間に共存する共有空間で、画像とキャプションを相互に検索できる。
  • グラフ・エンティティ埋め込み — ナレッジグラフのノードに対応するベクトルで、推薦や不正検知に利用される。

埋め込みを生成した後は、通常Pinecone、Weaviate、Milvus、pgvectorなどのベクターデータベースに保存し、k近傍法(k-NN)や近似最近傍探索(ANN)で問い合わせることで、大規模に最も近い一致を見つけます。

埋め込みは現代AIの縁の下の力持ちです。意味を幾何学に変換することで、ディープラーニングがベクトル表現を安価かつ驚くほど正確にする以前は不可能だった方法で、機械が世界を比較・検索・推論することを可能にしています。

Frequently Asked Questions

How is an embedding different from one-hot encoding?
A one-hot encoding represents each word as a long, sparse vector with a single 1 and the rest 0s, so "cat" and "dog" are just as unrelated as "cat" and "airplane." An embedding is a dense, learned vector in which words with similar meaning sit close together, which is why embeddings capture semantic similarity in a way one-hot vectors cannot.
What is the dimensionality of an embedding?
It depends on the model. Word2Vec typically used 100–300 dimensions; modern sentence transformers commonly use 384, 768, or 1,536; and large frontier models may use 3,072 or more. Higher dimensions can encode finer distinctions but use more memory and compute.
How are embeddings used in RAG (retrieval-augmented generation)?
In a RAG pipeline, every document chunk is converted into an embedding and stored in a vector index. When a user asks a question, it is also embedded, the system retrieves the chunks whose vectors are closest to the question's vector, and those chunks are fed to the LLM as context so it can answer grounded in the retrieved material.
How do you measure similarity between two embeddings?
The two most common measures are cosine similarity, which compares the angle between two vectors (ignoring magnitude), and Euclidean distance, which compares their straight-line distance. Cosine similarity is the standard for text embeddings because it focuses on direction rather than length.