🔢

埋め込み(Embedding)とは何か

計算するには数値化が必要 — すべてのAIの出発点

コンピュータは「猫」と「犬」が似ていることを知らない。文字列が違うから。埋め込みはこの問題を解く — 意味が似ているものは近い数値に、違うものは遠い数値に変換する。

「猫」 → [0.82, -0.15, 0.41, ...]
「犬」 → [0.79, -0.12, 0.38, ...]
「車」 → [-0.33, 0.67, -0.21, ...]

猫と犬のベクトルは近く、車は遠い。埋め込みとはこれだけのことだ。

埋め込みは目的、方法はいろいろ

「単語をベクトルに変換したい」 — これが埋め込みという目的だ。その方法が時代ごとに変わる。

統計ベース(埋め込み以前):

  • TF-IDF: 単語頻度でベクトル生成。意味は反映されない

  • LSA: 行列分解で次元削減。わずかに意味を反映

ニューラルネットベース(2013〜):

  • Word2Vec: 2層ニューラルネット。「king - man + woman = queen」を可能にした出発点

  • GloVe: 共起統計 + 行列分解のハイブリッド

  • FastText: 文字単位分解でタイポ・新語に強い

Transformerベース(2018〜):

  • BERT: 文脈を反映した埋め込み。同じ「bank」でも金融/川岸で違うベクトル

  • GPT系列: 大規模事前学習モデル

  • OpenAI text-embedding-3-small: 1536次元、多言語対応、APIですぐ使える

推薦システムで埋め込みが重要な理由

推薦の核心的な問いは「このユーザーはこのアイテムを好むか?」だ。

ユーザーとアイテムを同じベクトル空間に入れれば、距離がそのまま好みになる。近ければ好む可能性が高く、遠ければ低い。

このアイデアはMatrix FactorizationからTwo-Towerモデルまで、推薦システムの大半が共有している。

自前学習 vs 事前学習済みモデル

自前学習は自分のデータからベクトルを作る。ドメインに最適化されるが、数万件以上のデータが必要。

事前学習済みモデル(OpenAIなど)は学習済みモデルにテキストを送ってベクトルを受け取る。データが少なくても使え、多言語も自動対応。ほとんどのプロジェクトはここから始めればいい。

動作原理

1

非構造データ(テキスト、画像など)を入力

2

埋め込みモデルが固定サイズの数値ベクトルに変換

3

ベクトル間距離(コサイン類似度など)で類似性を測定

4

近いベクトル = 意味的に似ているもの

メリット

  • 非構造データを数学的に比較可能にする
  • 多言語・マルチモーダル統合がベクトル空間で自然にできる

デメリット

  • ベクトルだけでは「なぜ似ているか」の説明ができない(解釈不能)
  • 埋め込みの品質は学習データに大きく依存 — 偏ったデータは偏ったベクトルを生む

ユースケース

検索 — クエリと文書の意味的マッチング 推薦 — ユーザーとアイテムのベクトル距離で好みを予測 分類 — ベクトルを入力に感情分析、スパム検出 クラスタリング — 似たベクトル同士をグルーピング