埋め込みとベクトル検索

埋め込みとは

埋め込み(embedding)は、文章や画像を数値の並び(ベクトル)に変換する技術です。ポイントは、意味が近いものはベクトルとしても近くなるように変換されること。「犬の飼い方」と「子犬のしつけ」は使う単語が違っても、ベクトル空間ではご近所さんになります。

「犬の飼い方」    → [0.21, -0.53, 0.88, ...](数百〜数千個の数値)
「子犬のしつけ」  → [0.19, -0.49, 0.85, ...] ← 近い!
「決算書の読み方」→ [-0.72, 0.11, -0.30, ...] ← 遠い

この変換は [[機械学習の基礎]] で学習された埋め込みモデルが行います。

ベクトル検索 — 「意味」で探す

従来のキーワード検索は同じ単語が含まれるかで探しますが、ベクトル検索は意味が近いかで探します。

キーワード検索ベクトル検索
仕組み単語の一致・出現頻度ベクトル間の距離(近さ)
「PCが起動しない」で「パソコンの電源が入らない」を見つけられない(単語が違う)見つけられる(意味が近い)
得意固有名詞・型番などの厳密一致言い換え・曖昧な質問

検索の流れ: 文書群を事前に埋め込みへ変換して [[ベクトルデータベース]](NoSQL の一種として提供されることが多い)に保存 → 質問文も埋め込みに変換 → 距離が近い文書を取り出す。

実務では、キーワード検索とベクトル検索を組み合わせるハイブリッド検索もよく使われます(型番は厳密一致、内容は意味で、と両者の得意を活かす)。

初学者向けポイント

  • 埋め込みは「意味の座標」と考えると分かりやすい。近い座標 = 近い意味
  • ベクトルの次元数は数百〜数千。人間には読めないが、距離の計算はコンピュータの得意分野
  • 埋め込みモデルと生成モデル([[生成AI・LLM]])は別物。埋め込みは変換専門で文章は書かない
  • 最大の用途が [[RAG(検索拡張生成)]] — 質問に関連する文書をベクトル検索で見つけてLLMに渡す

関連技術とのつながり

  • [[RAG(検索拡張生成)]] — ベクトル検索で見つけた文書をLLMに渡す構成。埋め込みはその検索部分
  • [[生成AI・LLM]] — 埋め込みモデルの多くはLLMと同じ技術系統から生まれている
  • [[機械学習の基礎]] — 「意味の近さ」を学習する仕組みの土台
  • [[ベクトルデータベース]] — 埋め込みを保存し、意味の近さで検索するための専用のデータストア
Q: 埋め込み(embedding)の説明として正しいのはどれ?
- [ ] 文章を圧縮してファイルサイズを減らす技術
- [x] 文章を、意味が近いほど近くなる数値ベクトルに変換する技術
- [ ] 文章を暗号化して読めなくする技術
解説: 意味の近さがベクトルの距離に反映されるのが埋め込みの本質です。

Q: ベクトル検索がキーワード検索より得意なのはどれ?
- [x] 「PCが起動しない」で「パソコンの電源が入らない」という文書を見つける
- [ ] 型番「XJ-3000」の完全一致で探す
- [ ] 検索結果を五十音順に並べる
解説: 単語が違っても意味が近ければ見つけられるのがベクトル検索の強みです。厳密一致はキーワード検索の得意分野です。

Q: 埋め込みの最大の活用先として記事で挙げられているのはどれ?
- [ ] 画像の生成
- [ ] コードの自動整形
- [x] RAG(質問に関連する文書を検索してLLMに渡す構成)
解説: RAG の「検索」部分を支えるのがベクトル検索と埋め込みです。