AI・データ●●●○○

埋め込み

うめこみ

言葉や画像を「意味の近さが距離になる」数値ベクトルへ変換する技術。意味検索やRAGの核。

概要

埋め込み(エンベディング)は、言葉・文章・画像といったデータを、数百〜数千個の数値を並べたベクトル(座標)に変換する技術です。ポイントは変換のされ方にあります。「意味が近いものは近い座標に、意味が遠いものは遠い座標に」配置されるよう学習されているため、埋め込み空間では意味の近さが距離として測れるのです。「犬」と「子犬」は近くに、「犬」と「決算書」は遠くに置かれます。

これは「意味」というつかみどころのないものを、コンピュータが得意な数値計算の世界に持ち込む発想の転換です。文字列としての「犬」と「dog」は1文字も一致しませんが、埋め込み空間ではすぐ隣にいます。この性質のおかげで、キーワードが一致しなくても「言いたいことが同じ」文書を探せる意味検索、好みの近いアイテムを提示するレコメンド、そして LLM に関連知識を渡す RAG の検索部分が成立しています。

埋め込みを作るのはニューラルネットワークです。OpenAI や Google などが提供する埋め込みモデルの API に文章を渡すと、たとえば1536次元の数値配列が返ってくる — 現代のAIアプリ開発では、それくらい手軽に使える部品になっています。

なぜ生まれたか

コンピュータで言葉を扱う最初期の方法は「one-hot表現」でした。語彙が5万語あるなら5万次元のベクトルを用意し、「犬」なら犬の位置だけ1、他は全部0、とする方式です。しかしこの表現には致命的な欠陥があります。どの2語を取っても等しく無関係(すべてのベクトルが直交)で、「犬と猫は近い」という情報を一切持てないのです。「犬の飼い方」で検索して「子犬のしつけ」がヒットしない、単語が違えば別物 — 完全一致の世界しか作れませんでした。

転機は「単語の意味は、その単語がどんな文脈に現れるかで決まる」という分布仮説を機械学習に落とし込んだことです。2013年の word2vec は、大量のテキストで「周囲の単語を当てる」訓練をするだけで、意味の近い単語が自然と近い座標に集まる低次元の密なベクトル — 分散表現 — が得られることを示しました。「king − man + woman ≒ queen」のようにベクトルの足し引きが意味の操作に対応する現象は、意味が本当に幾何学に写し取れることの鮮烈なデモでした。その後、トランスフォーマーベースのモデルによって、単語単位から「文脈を考慮した文章全体の埋め込み」へと進化し、現在の実用水準に至っています。

詳細

意味の空間と距離の測り方

埋め込みモデルは、入力の文章をトークン列に分解し、ニューラルネットワークに通して1本のベクトルに集約します。似た意味の入力からは似たベクトルが出るよう、大量の「意味が近いペア・遠いペア」で訓練されています。出来上がる空間は数百〜数千次元ですが、直観は2次元の地図で十分つかめます。

埋め込み空間(実際は数百〜数千次元)動物の近傍子犬dog金融の近傍決算書株価距離が遠い = 意味が遠い近い文字列としては無関係な「犬」と「dog」が、意味によって隣り合う点に注目
埋め込み空間のイメージ — 意味の近さがそのまま距離になる

距離の測り方として実務で最もよく使われるのがコサイン類似度です。2本のベクトルのなす角度に注目し、向きが揃っているほど1に近く、無関係なら0付近、逆向きなら−1になります。「ベクトルの長さ(文章の長短などに影響される)は無視して、向き=意味の方向だけを比べる」尺度だと考えると直観に合います。意味検索とは、クエリ文を埋め込み、格納済みベクトルの中からコサイン類似度が高い順に取り出す処理にほかなりません。

「近さ=意味の近さ」の感覚は、実際に単語をつまんで動かしてみると腑に落ちます。

✦ 体験: 意味の近さをベクトルで測る
原点(すべてのベクトルの出発点)次元 1次元 2子犬ハムスター電車飛行機りんごパン女王男性女性
類似度ランキング

平面上の単語をクリックすると、その単語をクエリとした類似度ランキングがここに表示されます。

単語をクリックしてクエリに選んでみてください。全単語との類似度ランキングが右に出ます。

ハッシュとの対比 — 完全一致と意味的近傍

ハッシュ関数と並べると埋め込みの性格が際立ちます。ハッシュは「同一の入力→同一の値」を保証する一方、1文字でも違えば出力は全く別物になるよう設計されています(雪崩効果)。つまりハッシュは完全一致のための変換で、埋め込みは近さの保存のための変換です。「入力が少し変わったら出力も少しだけ変わってほしい」というハッシュとは正反対の要求を満たすのが埋め込みだ、と覚えると混同しません。同様に、RDBMS の LIKE 検索や全文検索が「文字面の一致」を探すのに対し、埋め込み検索は「意味の一致」を探します。両者は排他ではなく、実務ではキーワード検索と埋め込み検索を併用するハイブリッド検索がよく使われます。

使われ方 — 検索・レコメンド・RAG

意味検索では、あらかじめ全文書を埋め込みベクトルに変換してベクトルデータベースへ格納しておき、クエリが来たら同じモデルで埋め込んで近傍を探します。「返品したい」で検索して「返金ポリシー」の文書が見つかるのは、この仕組みの典型的な成果です。

レコメンドでは、商品・動画・ユーザーを同じ空間に埋め込み、「このユーザーのベクトルに近い商品」「この商品を見た人のベクトルに近い商品」を提示します。テキストに限らず、画像や音声も同じ空間に埋め込めば「この写真に似た商品を探す」といったクロスモーダル検索も可能です。

そして現在最大の用途が RAG です。LLM は学習時点までの知識しか持たないため、社内文書などの外部知識を検索して プロンプトに添える構成が定番になっており、その「関連文書を探す」中核を埋め込み検索が担っています。埋め込みの品質がそのまま回答品質の上限を決めるため、埋め込みモデルの選定はRAG設計の最重要ポイントの一つです。

実務の落とし穴

第一に、埋め込みモデルの混在。異なるモデル(あるいは同じモデルの別バージョン)が出すベクトルは別の空間の座標なので、比較しても意味がありません。格納時と検索時は必ず同一モデルを使い、モデルを更新したら全データの再埋め込みが必要です。第二に、チャンク分割の設計。長文書は分割してから埋め込みますが、切り方が悪いと文脈が失われ検索精度が落ちます。第三に、ドメイン適合。汎用モデルは専門用語だらけの領域で精度が出ないことがあり、その場合はファインチューニングされた領域特化の埋め込みモデルを検討します。次元数はモデルが決めるものですが、大きいほど高精度・高コストになるため、格納量と検索速度とのバランスで選ぶことになります。