生成AIの仕組み

埋め込み(Embedding)とは文章を数値ベクトルで表して意味の近さを測る技術

埋め込み(Embedding)は、文章・画像などを意味を反映した数値のベクトルに変換する技術です。意味の近さの測り方(コサイン類似度)、検索・RAG・分類への活用、ベクトルデータベースとの関係、注意点を具体例で整理します。

公的機関・公式資料などの一次情報と照合して作成しています。このサイトについて

埋め込みとは

埋め込み(embedding)は、文章・単語・画像などを、意味の近さが反映された数値の列(ベクトル)に変換する技術です。コンピュータは文字そのものの意味を直接扱えないため、数値に置き換えて計算します。意味が似ているものは、ベクトル空間で近い位置に配置されるように学習されており、検索やRAG、分類、重複判定など、幅広い用途に使われます(RAG(検索拡張生成))。

イメージ

2次元の地図に例えると、「犬」「猫」「ペット」は近い場所に、「自動車」「電車」は別の場所にまとまって配置されます。実際の埋め込みは、数百〜数千次元のベクトルで、人間には直接見えませんが、同じ考え方です。

単語・文章 近い位置にくるもの
犬 猫、ペット、散歩
東京 大阪、日本の都市、首都
「返金したい」 「払い戻しの方法を知りたい」

最後の例のように、言葉が違っても意味が近い文章が、近い位置になる点が重要です。

意味の近さを測る:コサイン類似度

ベクトル同士の近さは、コサイン類似度(2つのベクトルの向きがどれだけ近いか)などで測ります。値が1に近いほど、意味が近いと判断します。

指標 内容
コサイン類似度 ベクトルの向きの近さ(−1〜1)。広く使われる
ユークリッド距離 ベクトル間の距離
内積 大きさも考慮した類似度(正規化されていれば、コサイン類似度と等価)

主な活用

用途 内容
意味検索 キーワードが一致しなくても、意味の近い文書を見つける
RAG 質問と近い文書を検索して、回答の根拠にする(RAG(検索拡張生成))
分類・クラスタリング 似た内容のグループ分け、問い合わせの分類
重複・類似の検出 似た記事・問い合わせをまとめる
おすすめ 近い内容のコンテンツを提示する
異常検知 他と大きく離れたものを検出する

活用の流れ(意味検索の例)

  1. 検索対象の文書を、チャンク(適切な長さ)に分割する(チャンク分割)。
  2. 各チャンクを埋め込みモデルでベクトルに変換する。
  3. ベクトルをベクトルデータベースに保存する(ベクトルデータベース)。
  4. 質問も同じモデルでベクトルに変換する。
  5. 質問ベクトルに近いチャンクを検索して取り出す。
  6. 取り出した内容を、LLMに渡して回答させる。

重要なのは、文書と質問を、同じ埋め込みモデルで変換することです。モデルが異なると、ベクトルの空間が異なり、比較できません。

LLMの内部での埋め込み

LLMの内部でも、入力のトークンを最初にベクトルに変換する層があり、これも埋め込みと呼ばれます(Transformerとは)。ここで解説した「文章全体の埋め込み」は、検索などの用途のために、専用に学習されたモデルで作るのが一般的です。

埋め込みの注意点

注意点 内容
日本語の精度 モデルによって、日本語での検索精度が異なる。日本語対応を確認する
専門用語 業界特有の用語・社内用語は、うまく近さを測れないことがある
更新 文書を更新したら、埋め込みも更新する必要がある
次元数と費用 次元が大きいほど、保存容量と検索の計算が増える
機密情報 外部サービスで埋め込みを作る場合、データの送信先に注意する(機密情報の扱い)
万能ではない 意味が近い=正解とは限らない。必要に応じて再順位付けを行う(リランキング)

埋め込みの具体例

社内のFAQが500件あるとします。従業員が「パソコンが起動しない」と質問すると、キーワード検索では「起動」という語を含むFAQしか見つからないかもしれません。埋め込みによる意味検索なら、「電源が入らない」「立ち上がらない」といったFAQも見つけられます。

埋め込みのFAQ(よくある質問)

Q. 埋め込みは、ChatGPTのようなAIと別のものですか?
A. 別のモデルであることが一般的です。文章を理解して回答を作るモデルとは役割が異なり、意味検索のために作られています。

Q. 自分で埋め込みを作れますか?
A. 提供元のAPIや、公開されているモデル(Hugging Faceなど)を使えば、比較的手軽に作れます。なお、提供元によっては自社の埋め込みモデルを持たない場合があり、たとえばAnthropicの公式ドキュメントでは、自社の埋め込みモデルは提供しておらず、外部のプロバイダー(Voyage AIなど)の利用例が紹介されています。

Q. ベクトルの中身は、人間が読めますか?
A. 数値の列そのものは、人間には解釈できません。近さの計算にだけ使います。

筆者の見解(埋め込み)

埋め込みは、「意味をものさしで測れるようにした」技術だと思います。RAGや検索の質は、LLMの賢さよりも、「適切な文書を、適切な形で見つけてこられるか」に左右されることが多く、埋め込みとチャンク分割の設計が品質を大きく左右すると考えています。まず小さなデータで試し、うまく検索できているかを目で確認することをおすすめします。

埋め込みの関連項目

  • RAG(検索拡張生成)
  • ベクトルデータベース
  • チャンク分割
  • リランキング

出典(一次情報)

本記事は一般的な情報の提供を目的としています。AIのサービス・機能・料金・仕様は頻繁に更新されるため、最新の内容は各社の公式ドキュメントでご確認ください。「筆者の見解」は一つの考え方です。