AI活用

Embeddingとは?AI検索で文章をベクトル化する仕組み

Embeddingの意味、文章を数値ベクトルへ変換する仕組み、コサイン類似度の計算、モデル選びと検索精度の確認方法を解説します。

この記事の目次
  1. 結論:Embeddingは意味の近さを計算できる数値表現
  2. 文章をベクトル化すると何が変わるのか
  3. コサイン類似度を3つの文章で試す
  4. Embeddingモデルを選ぶ4つの基準
  5. 1.対象言語と業務用語
  6. 2.ベクトルの次元数
  7. 3.入力できる長さと分割方針
  8. 4.運用条件
  9. 検索精度が低いときの確認順
  10. 最小評価表を作る
  11. Embeddingについてよくある質問
  12. Embeddingは文章を暗号化する技術ですか?
  13. 類似度が高ければ回答も正しいですか?
  14. Embedding検索だけで十分ですか?
  15. まとめ

Embedding(埋め込み)とは、文章や画像などの意味的な特徴を、複数の数値を並べたベクトルへ変換する方法です。AI検索では、質問と資料を同じ方法でベクトル化し、ベクトル同士の近さから関連する文章を探します。

キーワードが完全一致しなくても、「料金を変更したい」と「契約プランの価格改定」のように意味の近い表現どうしを関連づけられる点が特徴です。ただし、Embeddingを導入するだけで検索が正確になるわけではありません。モデル、文章の分割単位、検索方法、評価データを一緒に設計する必要があります。

この記事では、Embeddingの仕組み、コサイン類似度の計算、モデルの選び方、精度が低いときの見直し方を解説します。

情報確認日:2026年7月18日(日本時間)

結論:Embeddingは意味の近さを計算できる数値表現

Embeddingを使う流れ

  1. 資料の文章を一定の単位に分割する
  2. 各文章を同じEmbeddingモデルでベクトル化する
  3. 質問も同じモデルでベクトル化する
  4. 類似度が高い文章を検索候補として取得する
  5. 候補が質問へ答えられるか評価する

ベクトルは、たとえば[0.12, -0.48, 0.31, ...]のような数値列です。個々の次元を人が「価格」「場所」と明確に命名できるとは限りませんが、学習によって、意味や使われ方が似た文章ほど近い位置に配置されやすくなります。

スポンサーリンク

文章をベクトル化すると何が変わるのか

通常の文字列比較では、表記が違う文章を別物として扱います。Embeddingでは、文章全体の特徴を数値空間上の位置として表し、その距離や角度を比較します。

検索対象 キーワード検索 Embedding検索
製品番号「AB-120」 完全一致に強い 固有番号だけでは利点が小さい
「退会したい」 「退会」がない文を逃す場合がある 「契約を解約する」と近くなる可能性がある
曖昧な質問 検索語の選び方に左右される 意味の近い候補を広く拾える場合がある

固有名詞や型番にはキーワード検索、言い換えにはEmbedding検索が有効な場合があります。実務では、両方の結果を統合するハイブリッド検索も候補になります。

コサイン類似度を3つの文章で試す

仕組みを理解するため、次の3文が簡略化された3次元ベクトルになったと仮定します。

文章 仮のベクトル
A:契約を解約したい [0.9, 0.1, 0.0]
B:退会手続きを教えて [0.8, 0.2, 0.0]
C:画像のサイズを変更する [0.0, 0.1, 0.9]

コサイン類似度は、2つのベクトルが作る角度の近さを測ります。1に近いほど同じ方向、0に近いほど直交、-1に近いほど反対方向です。

function cosineSimilarity(a, b) {
  if (a.length !== b.length || a.length === 0) {
    throw new Error("同じ長さのベクトルが必要です");
  }

  const dot = a.reduce((sum, value, i) => sum + value * b[i], 0);
  const normA = Math.sqrt(a.reduce((sum, value) => sum + value ** 2, 0));
  const normB = Math.sqrt(b.reduce((sum, value) => sum + value ** 2, 0));

  if (normA === 0 || normB === 0) {
    throw new Error("ゼロベクトルは比較できません");
  }

  return dot / (normA * normB);
}

const a = [0.9, 0.1, 0.0];
const b = [0.8, 0.2, 0.0];
const c = [0.0, 0.1, 0.9];

console.log(cosineSimilarity(a, b).toFixed(3)); // 0.991
console.log(cosineSimilarity(a, c).toFixed(3)); // 0.012

この例ではAとBが近く、AとCは遠いという結果になります。実際の検索では高次元のベクトルを扱い、類似度上位の文章を候補にします。しきい値を固定する前に、自社の質問データで正解文書が上位へ入るか確認してください。

Embeddingモデルを選ぶ4つの基準

1.対象言語と業務用語

日本語対応と書かれていても、略語、製品名、法律用語などの得意・不得意はモデルごとに異なります。実際の質問と正解文書を20〜50組ほど用意し、上位1件・3件・5件に正解が入る割合を比較します。

2.ベクトルの次元数

次元数が増えると保存容量と計算量も増えます。ただし次元数が多いほど精度が上がるとは限らないため、検索品質、保存量、応答時間をセットで測ります。

3.入力できる長さと分割方針

モデルごとに入力上限があります。上限内でも、長い章を丸ごと1ベクトルにすると複数の話題が混ざります。見出し単位、段落単位など複数の分割方法を比較してください。トークンの考え方はAIのトークンとはで解説しています。

4.運用条件

API料金、応答時間、データ送信範囲、利用規約、モデルの更新方針を確認します。機密資料を扱う場合は、送信可否を社内ルールと契約条件に照らして判断します。

重要:索引を作るときと質問するときは、原則として同じEmbeddingモデルと同じ前処理を使用します。モデルを変更した場合、保存済み文書を再ベクトル化する計画が必要です。

検索精度が低いときの確認順

  1. 正解資料が対象に入っているか:未登録や古い版を先に直す
  2. 分割で意味が切れていないか:見出しや前後関係を保つ
  3. 質問と索引の前処理が同じか:モデル、正規化、言語を揃える
  4. 上位候補数が少なすぎないか:1件だけでなく複数候補を評価する
  5. 固有語を落としていないか:キーワード検索との併用を試す
  6. 回答生成と混同していないか:まず検索結果だけを採点する

RAGでは「検索できなかった」のか「正しい資料を渡したのに回答を誤った」のかを分けることが重要です。全体像はRAGとはを参照してください。

最小評価表を作る

question,expected_document,top1,top3,judgment,note
解約方法を知りたい,退会手順.md,退会手順.md,退会手順.md|FAQ.md,pass,言い換えでも取得
AB-120の保証期間,製品AB-120.md,製品一覧.md,製品AB-120.md|製品一覧.md,pass,型番はkeyword併用
海外配送の対象国,配送ポリシー.md,国内配送.md,国内配送.md|FAQ.md,fail,対象資料の分割を見直す

平均類似度だけで良否を決めず、業務上必要な質問で正しい文書が取得できるかを確認します。長い入力が検索や回答へ与える影響はコンテキストウィンドウの基礎も参考になります。

Embeddingについてよくある質問

Embeddingは文章を暗号化する技術ですか?

いいえ。検索や機械学習で扱う数値表現であり、暗号化ではありません。元文書と同様に、ベクトルやメタデータのアクセス権を管理してください。

類似度が高ければ回答も正しいですか?

保証されません。似ていても質問へ答えられない文章があります。検索候補の関連性と、生成された回答の正確性を別々に評価します。

Embedding検索だけで十分ですか?

用途によります。型番、氏名、エラーコードなどはキーワード検索が有効です。実データでベクトル検索、キーワード検索、併用方式を比較してください。

まとめ

Embeddingは、文章を意味的な特徴を持つ数値ベクトルへ変換し、質問と資料の近さを計算できるようにする技術です。AI検索やRAGの重要な部品ですが、モデルだけでなく分割、メタデータ、検索方式、評価用質問まで含めて設計する必要があります。

まずは実際の質問と正解文書を少数用意し、正解が上位へ入るかを測りましょう。その結果を基準に、分割方法やキーワード検索との併用を調整するのが確実です。

スポンサーリンク