RAG入門:AIに知識を与える技術
埋め込み(Embedding)とは?テキストをベクトル化する仕組み
このレッスンで分かること
- この記事では「埋め込み(Embedding)とは?テキストをベクトル化する仕組み」を RAG 実装 の現場で使える形で整理します
- 埋め込み(Embedding)とは?言葉の意味を数値化する技術 をおさえれば、現場で迷ったときに立ち戻れる
- なぜテキストを数値にする必要があるのか? をおさえれば、現場で迷ったときに立ち戻れる
- ベクトル化によって意味の近さが計算可能になる理由 をおさえれば、現場で迷ったときに立ち戻れる
- 多次元空間での位置関係 をおさえれば、現場で迷ったときに立ち戻れる
埋め込み(Embedding) とは
RAGの核心技術「埋め込み(Embedding)」を徹底解説。テキストを数値ベクトルに変換し、AIが言葉の意味や類似性を計算する仕組みを図解。次元やコサイン類似度の概念から、実務でのモデル選びのポイントまで学べます。
埋め込み(Embedding)とは?言葉の「意味」を数値化する技術
前回のレッスンでは、膨大なドキュメントを扱いやすいサイズに切り分ける「チャンキング」について学びました。しかし、切り分けたテキストをそのままAIに渡しても、AIは効率よく情報を探し出すことができません。なぜなら、コンピュータは「文字」そのものを理解しているのではなく、「数値」として情報を処理しているからです。
そこで重要になるのが、今回のテーマである埋め込み(Embedding)です。埋め込みとは、一言で言えば「テキストの意味を、多次元空間上のベクトル(数値のリスト)に変換する技術」のことです。このレッスンでは、RAGにおいて最も重要なプロセスの一つである「ベクトル化」の仕組みを詳しく解説します。
埋め込みは「文字列の見た目」ではなく「意味」を比較可能にする変換器です。同じ意味を持つ別の表現でも、似たベクトルに着地するため柔軟な検索が成立します。
なぜテキストを数値にする必要があるのか?
人間は「リンゴ」という言葉を見れば、それが「赤い」「甘い」「果物」であることを瞬時に理解します。しかし、コンピュータにとっては単なる文字コードの羅列に過ぎません。
従来のキーワード検索(全文検索)では、単語が一致するかどうかだけで判断していました。これでは、「iPhone」と検索したときに「スマートフォン」という言葉を含む重要な記事を見逃してしまう可能性があります。埋め込み技術を使うことで、AIはこれら2つの言葉が「意味的に近い」ことを数値として認識できるようになります。
ベクトル化によって「意味の近さ」が計算可能になる理由
テキストを埋め込みモデル(Embedding Model)に入力すると、数百から数千個の数字が並んだベクトル(Vector)が出力されます。たとえば、OpenAIの text-embedding-3-small というモデルでは、一つのテキストが「1,536個の数字の塊」に変換されます。
多次元空間での位置関係
この数字の塊は、いわば「意味の空間における住所」のようなものです。2次元の地図で例えてみましょう。
- 「東京」と「横浜」は、地図上の距離が近いです。
- 「東京」と「ロンドン」は、地図上の距離が遠いです。
埋め込みの世界では、これが2次元ではなく多次元空間で行われます。それぞれの次元には、「生物学的性質」「色」「硬さ」「感情」といった、抽象的な特徴が割り振られているイメージです(実際にはAIが自律的に学習するため、どの数字がどの意味に対応するかを人間が完全に理解することは困難です)。
意味の計算:コサイン類似度
数値化される最大のメリットは、数学的に「近さ」を計算できる点にあります。一般的に使われるのが「コサイン類似度」という指標です。2つのベクトルの向きがどれくらい似ているかを計算することで、AIは「意味が似ているドキュメント」を瞬時に見つけ出します。
コサイン類似度はベクトルの「向き」だけを比較する指標です。長さの差を無視するため、文章の長短に左右されず純粋な意味の近さを測れます。
| 単語A | 単語B | 類似度のイメージ |
|---|---|---|
| 犬 | 子犬 | 非常に高い(向きがほぼ同じ) |
| 銀行 | 金融 | 高い(関連性が強い) |
| 銀行 | 川岸 | 低い(多義語でも文脈により区別される) |
| 宇宙 | カレー | 非常に低い(関係がない) |
このように、埋め込みは言葉を「点」として空間に配置し、その距離を測ることで、人間のような柔軟な検索を可能にしています。
RAGにおける埋め込みの役割と重要性
RAG(検索拡張生成)のプロセスにおいて、埋め込みは2つのタイミングで登場します。
- データベース構築時(
インデックス作成): 自社データやPDFなどのドキュメントをチャンク分割し、それらをすべてベクトル化して「ベクトルデータベース」に保存します。 - ユーザーの質問時(クエリ実行): ユーザーが入力した質問文も、同じ埋め込みモデルを使ってベクトル化します。そして、データベース内にあるベクトルの中から、質問のベクトルと「最も近いもの」を検索します。
ここで重要なのは、「同じ埋め込みモデルを使わなければならない」というルールです。地図の縮尺や基準が異なれば、正しい場所を探せないのと同じ理由です。
避けたい例 不適切な検索の例
- ドキュメントのベクトル化には「OpenAIのモデル」を使い、検索時の質問のベクトル化には「Googleのモデル」を使う。
- キーワードが完全一致しているかどうかだけで検索を行う(「給与規定」を探したいのに「お給料のルール」という言葉を無視してしまう)。
良い例 適切な検索の例
- インデックス作成時と検索時で、全く同じ埋め込みモデル(例:text-embedding-3-small)を一貫して使用する。
- 意味的な類似性を活用し、「有給休暇」というクエリに対して「リフレッシュ休暇」や「休みに関する制度」といった関連情報をヒットさせる。
埋め込みモデルの選び方と実践的な活用ポイント
現在、多くの埋め込みモデルが提供されています。モデル選びの際に考慮すべきポイントは以下の通りです。
1. 次元の数(Dimension)
次元が多いほど、より複雑で細かい意味の違いを表現できますが、その分計算コストやデータベースの保存容量が増加します。最近のモデルでは、性能を維持したまま次元数を削減できる機能(Matryoshka Embeddingsなど)も登場しています。
2. 対応言語
日本語のドキュメントを扱う場合は、日本語のニュアンスを正しく学習しているモデルを選ぶ必要があります。OpenAIの最新モデルや、日本語に特化したオープンソースのモデル(Hugging Faceなどで公開されているもの)が有力な候補です。
3. 最大入力トークン数
一度にベクトル化できるテキストの量には制限があります。長い文章を一度にベクトル化しようとすると、情報が薄まってしまい、検索精度が落ちることがあります。ここで前回の「チャンキング」の重要性が効いてくるわけです。
やってみよう 考えてみよう:意味の引き算
AIの世界では「王様」のベクトルから「男性」のベクトルを引き、「女性」のベクトルを足すと、「女王」のベクトルに非常に近くなるという有名な話があります。では、「パリ」から「フランス」を引き、「日本」を足すと、どんな言葉のベクトルに近づくでしょうか?
答え:東京(国と首都の関係性がベクトルに刻まれているため)
まとめ
埋め込み(Embedding)は、テキストをAIが計算可能な数値のリスト(ベクトル)へと変換する、RAGの基盤技術です。
- テキストを多次元空間上の座標として表現する
コサイン類似度などを用いて、言葉の「意味の近さ」を計算する- RAGでは、質問文とドキュメントの両方を同じモデルでベクトル化することが不可欠
この仕組みがあるからこそ、AIは膨大なデータの中から、私たちの質問にぴったりの回答を見つけ出すことができるのです。次のレッスンでは、このベクトルを使って実際に情報を探し出す「ベクトル検索」の具体的なプロセスを詳しく見ていきましょう。
埋め込みは、いわばAIにとっての「共通言語」です。一見するとただの数字の羅列ですが、そこには人類が積み上げてきた知識の関連性が凝縮されています。難しく感じるかもしれませんが、まずは「意味を座標に変換しているんだな」というイメージを持てれば完璧です!
現場でよくある具体例
- 業務ケース 1 — 社内規程 200 ページに RAG を導入。チャンクサイズ 512、
top-k=5、Re-ranker 有りで Recall@5 が 0.62 → 0.81 - 業務ケース 2 — エンジニア向け技術文書では「コードブロックを 1 チャンク」にしたら検索精度が大きく改善
- 業務ケース 3 — 営業 FAQ では
BM25+ Embedding の Hybrid Retrieval で、固有名詞検索の取りこぼしが減った
次にとるべきアクション
- 手元の社内 PDF / FAQ 10 件で RAG ミニ版を作る —
LangChainかLlamaIndexで構築し、「埋め込み(Embedding)とは?テキストをベクトル化する仕組み」の論点を試す - チャンクサイズと検索件数を 2 通り試す — 256 / 512 トークン × top-k=3 / 5 など、定量比較する
- 評価指標を 1 つ決める — Recall@k / 回答正答率 / コストのいずれかをチームで KPI 化する
次のレッスン
次は ベクトル検索とは?意味の近さで情報を探し出す技術 で、ベクトル検索とは?意味の近さで情報を探し出す技術 を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- 埋め込み の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. 埋め込み とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
参考にした出典
- Lewis et al.「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」 — RAG の原論文(出典: NeurIPS 2020, https://arxiv.org/abs/2005.11401)
- OpenAI Cookbook「Question answering using embeddings」 — Embedding ベース検索の実装例(出典: OpenAI, https://cookbook.openai.com/examples/question_answering_using_embeddings)
- LangChain 公式ドキュメント「RAG」 — チャンク分割・リトリーバ設計のベストプラクティス(出典: LangChain, https://python.langchain.com/docs/tutorials/rag/)
学習を加速したい方へ
RAG (検索拡張生成) 入門ガイドを体系的にマスターするなら、chotdekiru の無料学習ポータル で実際に手を動かして学習を始めるのがおすすめです。質問・つまずきも現役エンジニアが伴走します。
復習ミニクイズ
RAGシステムを構築する際、ドキュメントの登録時(インデックス作成)とユーザーの質問時(検索実行)における「埋め込みモデル」の扱いとして、最も適切なものはどれですか?