RAG入門:AIに知識を与える技術
RAGの全体像:Indexing, Retrieval, Generationの3ステップ
このレッスンで分かること
- この記事では「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に独自の知識を与えるための技術的なロードマップが明確になります。
ステップ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の流れ
クエリのベクトル化はユーザーの質問(「有給休暇の申請方法は?」など)を、Indexing時と同じモデルを使ってベクトルに変換します。類似度計算は質問のベクトルと、データベース内にある各チャンクのベクトルを比較し、距離が近いもの(=意味が似ているもの)を上位からいくつか選別します。- 情報の抽出は最も関連性が高いと思われる上位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にカンニングペーパーを渡して、それを見ながら答えてもらうイメージです。これにより、信頼性の高い回答を生成できます。
やってみよう 考えてみよう: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 — 社内規程 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で構築し、「RAGの全体像:Indexing, Retrieval, Generationの3ステップ」の論点を試す - チャンクサイズと検索件数を 2 通り試す — 256 / 512 トークン × top-k=3 / 5 など、定量比較する
- 評価指標を 1 つ決める — Recall@k / 回答正答率 / コストのいずれかをチームで KPI 化する
次のレッスン
次は RAGのユースケース:チャットボット、社内検索、文書要約 で、RAGのユースケース:チャットボット、社内検索、文書要約 を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- RAG 3ステップ の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. RAG 3ステップ とは何か、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を導入したチャットボットにおいて、ユーザーが「有給の申請方法」を質問した際、システムが「社内の食堂メニュー」に関する情報を抽出してしまい、的外れな回答が生成されました。この場合、3つのプロセスのうち、主にどこに改善の余地があると考えられますか?