RAG入門:AIに知識を与える技術

RAGの全体像:Indexing, Retrieval, Generationの3ステップ

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • この記事では「RAGの全体像:Indexing, Retrieval, Generationの3ステップ」を RAG 実装 の現場で使える形で整理します
  • RAGを支える3つの基幹プロセス → 全体像を把握する をおさえれば、現場で迷ったときに立ち戻れる
  • ステップ1:Indexing(インデックス作成)—— AIの辞書を作る をおさえれば、現場で迷ったときに立ち戻れる
  • 1. ドキュメントの読み込み(Loading) をおさえれば、現場で迷ったときに立ち戻れる
  • 2. テキスト分割(Chunking) をおさえれば、現場で迷ったときに立ち戻れる

RAGの全体像 とは

RAG(検索拡張生成)の根幹を成す3つのプロセス「Indexing」「Retrieval」「Generation」を徹底解説。データの整理から検索、回答生成までの流れを図解を交えて理解し、精度の高いAIシステムを構築する基礎を学びます。

RAGを支える3つの基幹プロセス → 全体像を把握する

前回のレッスンでは、RAG(検索拡張生成)がLLMの弱点を補い、最新情報やプライベートな情報を扱うための強力な手法であることを学びました。しかし、実際にRAGを構築しようとすると、「どこから手をつければいいのか?」「データはどうやって管理するのか?」といった疑問が湧いてくるはずです。

RAGの仕組みは、大きく分けてIndexing(インデックス作成)」「Retrieval(検索)」「Generation(生成)」という3つのステップで構成されています。これらは、人間が「試験勉強をして(Indexing)」「参考書から必要な箇所を探し(Retrieval)」「解答を書く(Generation)」というプロセスに非常によく似ています。

RAGの3ステップ — Indexing は「準備」、Retrieval は「探索」、Generation は「回答作成」のフェーズ。事前準備とリアルタイム処理が明確に分かれている点が、通常のチャットボットとの最大の違いです。

このレッスンでは、RAGの全体像をこの3ステップに沿って深掘りし、それぞれの役割と重要性を具体的に解説します。この流れを理解することで、AIに独自の知識を与えるための技術的なロードマップが明確になります。

diagram (will load when visible)

ステップ1:Indexing(インデックス作成)—— AIの「辞書」を作る

RAGの最初のステップは、AIに読み込ませたい膨大なデータを、検索しやすい形に整理することです。LLMはテキストをそのまま「理解」しているわけではなく、数値(ベクトル)として処理します。そのためIndexing(インデックス作成)では、事前にデータをベクトルに変換して保存しておきます。

Indexingは、主に以下の4つのプロセスで行われます。

1. ドキュメントの読み込み(Loading)

PDF、テキストファイル、Webサイト、データベースのログなど、外部知識となるデータソースを収集します。

2. テキスト分割(Chunking)

長い文書をそのまま処理すると、検索の精度が落ちたり、LLMが一度に読み込める文字数制限(コンテキストウィンドウ)を超えたりしてしまいます。そのため、意味のある単位(例:300文字〜500文字程度)で細かく分割します。これをチャンク化と呼びます。

3. ベクトル化(Embedding)

分割したテキスト(チャンク)を、AIが意味を計算できる数値のリスト(ベクトル)に変換します。これにより、「犬」と「イヌ」が近い意味であることを計算で導き出せるようになります。

4. ベクトルデータベースへの保存

変換されたベクトルデータと元のテキストをセットにして、専用の「ベクトルデータベース」に保存します。

チャンク化の目安 — 300〜500文字を基本に、見出しや段落で意味が切れる位置で区切るのがコツ。チャンクが大きすぎると検索ノイズが、小さすぎると文脈不足が起きやすくなります。

避けたい例

プレーンテキスト

// 不適切なIndexingの例 数万文字の社内規程マニュアルを、分割せずに1つのデータとしてそのまま登録する。

これでは検索時に必要な箇所を特定できず、LLMの入力制限にも引っかかってしまいます。

良い例

プレーンテキスト

// 適切なIndexingの例 マニュアルを200〜500文字程度の適切なサイズに分割(チャンク化)して保存する。

これにより、必要な情報だけをピンポイントで抽出できるようになります。


ステップ2:Retrieval(検索)—— 関連情報の「ピックアップ」

ユーザーが質問を入力したとき、Indexingで作成した巨大な辞書の中から、回答に役立ちそうな情報を見つけ出すのがRetrieval(検索)の役割です。

RAGにおいて、この検索ステップはセマンティック検索(意味検索)と呼ばれます。従来のキーワード検索(Google検索のような単語の一致)とは異なり、質問の「意図」を汲み取って情報を探します。

Retrievalの流れ

  1. クエリのベクトル化はユーザーの質問(「有給休暇の申請方法は?」など)を、Indexing時と同じモデルを使ってベクトルに変換します。
  2. 類似度計算は質問のベクトルと、データベース内にある各チャンクのベクトルを比較し、距離が近いもの(=意味が似ているもの)を上位からいくつか選別します。
  3. 情報の抽出は最も関連性が高いと思われる上位3〜5個程度のチャンクを取り出します。

このステップの精度が、最終的な回答の質を左右します。どれだけ優れたLLMを使っても、検索結果が間違っていれば、正しい回答は生成されません。これをGIGO(Garbage In, Garbage Out)の原則と呼びます。

特徴キーワード検索セマンティック検索(Retrieval)
仕組み単語が一致しているか意味や文脈が似ているか
メリット特定の名称やIDの検索に強い言い換えや曖昧な表現に対応できる
デメリット表記揺れ(例:PCとパソコン)に弱い計算コストがキーワード検索より高い

RetrievalはRAGの心臓部です。どんなに頭の良いLLMを使っても、検索結果が間違っていれば正しい回答は得られません。ここを磨くのがRAG開発の醍醐味ですよ!


ステップ3:Generation(生成)—— 根拠に基づいた「回答作成」

最後のステップが、検索された情報を元にLLMが回答を作成することです。Generation(生成)は、ここが通常のチャットAIと大きく異なる点です。

通常のLLMは自分の記憶(学習データ)だけで答えますが、RAGではプロンプトの中に「検索した情報」を埋め込み、「この情報だけを使って答えてください」という命令を与えます。これにより、ハルシネーション(もっともらしい嘘)を劇的に減らすことが可能になります。

Generation の鉄則 — LLM に「検索した参考資料だけを根拠に答えて」と明示的に指示する。これだけでハルシネーション発生率が大きく下がり、出典付き回答も実現しやすくなります。

具体的なプロンプトの構造

避けたい例

プレーンテキスト

// 悪い例:LLMの知識のみに頼る(ハルシネーションのリスク大) 質問:当社の有給休暇の申請方法を教えてください。

良い例

プレーンテキスト

// 良い例:検索結果(Context)を明示的に渡す あなたは社内ヘルプデスクです。以下の【参考資料】に基づいて回答してください。 【参考資料】: (ここにRetrievalで取得したチャンクを貼り付ける) 質問:当社の有給休暇の申請方法を教えてください。

このように、LLMにカンニングペーパーを渡して、それを見ながら答えてもらうイメージです。これにより、信頼性の高い回答を生成できます。

diagram (will load when visible)

やってみよう 考えてみよう:RAGのパフォーマンス改善 もし、社内チャットボットが「質問とは関係ない的外れな回答」ばかり返してくるとしたら、3つのステップ(Indexing, Retrieval, Generation)のうち、どこに問題がある可能性が高いでしょうか?それぞれの原因を予想してみましょう。


まとめ:3ステップの連携がRAGの命

RAGは、単にAIに文章を読ませる技術ではなく、「整理(Indexing)」「検索(Retrieval)」「構成(Generation)」という3つの高度な処理を組み合わせたシステムです。

  • Indexingは情報を切り分け、数値化して整理する準備段階
  • Retrievalは質問の意味を理解し、整理された中から最適な回答候補を探す段階
  • Generationは見つけた情報を根拠に、自然な言葉で回答を組み立てる段階

この3つのどれが欠けても、高品質なRAGは実現できません。まずは、自分の持っているデータがどのようにベクトル化され、どのように検索されるのかというイメージを持つことが、RAG活用の第一歩となります。

「RAGの仕組みは難しそう…」と感じるかもしれませんが、まずは「AIに辞書を持たせて、引き方を教えてあげる」という感覚で捉えればOKです!この3ステップを意識するだけで、AI開発の視点がぐっとプロに近づきますよ。

現場でよくある具体例

  1. 業務ケース 1 — 社内規程 200 ページに RAG を導入。チャンクサイズ 512、top-k=5、Re-ranker 有りで Recall@5 が 0.62 → 0.81
  2. 業務ケース 2 — エンジニア向け技術文書では「コードブロックを 1 チャンク」にしたら検索精度が大きく改善
  3. 業務ケース 3 — 営業 FAQ では BM25 + Embedding の Hybrid Retrieval で、固有名詞検索の取りこぼしが減った

次にとるべきアクション

  1. 手元の社内 PDF / FAQ 10 件で RAG ミニ版を作るLangChainLlamaIndex で構築し、「RAGの全体像:Indexing, Retrieval, Generationの3ステップ」の論点を試す
  2. チャンクサイズと検索件数を 2 通り試す — 256 / 512 トークン × top-k=3 / 5 など、定量比較する
  3. 評価指標を 1 つ決める — Recall@k / 回答正答率 / コストのいずれかをチームで KPI 化する

次のレッスン

次は RAGのユースケース:チャットボット、社内検索、文書要約 で、RAGのユースケース:チャットボット、社内検索、文書要約 を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. RAG 3ステップ の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. RAG 3ステップ とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考にした出典

学習を加速したい方へ

RAG (検索拡張生成) 入門ガイドを体系的にマスターするなら、chotdekiru の無料学習ポータル で実際に手を動かして学習を始めるのがおすすめです。質問・つまずきも現役エンジニアが伴走します。

復習ミニクイズ

RAGを導入したチャットボットにおいて、ユーザーが「有給の申請方法」を質問した際、システムが「社内の食堂メニュー」に関する情報を抽出してしまい、的外れな回答が生成されました。この場合、3つのプロセスのうち、主にどこに改善の余地があると考えられますか?

参考リンク