Hello there, ('ω')ノ
「RAGって、どう動いてるの?」
ここまで読んできて、こんな疑問を感じている方も多いのではないでしょうか?
💬「RAGってすごそうだけど、実際にはどう動いてるの?」
💬「AIに答えさせるまでに、何が起きてるの?」
RAG(検索拡張型生成)は、ただAIに質問して終わり、ではありません。
その裏では、3つのステップが密接に連携して働いています。
その3ステップとは──
✅ インデックス(Indexing)
✅ 検索(Retrieval)
✅ 生成(Generation)
今回は、それぞれのステップで何が行われているのか?どこに工夫の余地があるのか?を、初心者の方にもわかるように丁寧に解説します。
全体像:RAGの流れを一言でまとめると?
① インデックス:社内の文書を“検索しやすい形”に準備する ② 検索:質問に合った情報を探し出す ③ 生成:探し出した情報を元にAIが答える
では、それぞれの工程を詳しく見ていきましょう。
🧩 ステップ①:インデックス(Indexing)
= データの“ベクトル化と整理”
RAGを始めるには、まず「AIが読むべき資料(社内データ)」を、検索できる状態に変換する必要があります。
この作業が「インデックス」です。
🔧 主な作業内容
- 文書の読み込み(PDF, Word, Excel, テキストなど)
- 分割(チャンク化):段落・文ごとなど、検索単位に分ける
- ベクトル化(埋め込み):それぞれの文章を“意味ベースの数値”に変換
- 保存(インデックス化):ベクトルデータベースに登録
🧠 ここで作られるのは「AIが意味で探せるデータの地図」のようなものです。
🔍 ステップ②:検索(Retrieval)
= 質問に合う“意味が近い情報”を取り出す
ユーザーが質問を入力すると、まずAIはその質問もベクトル化して、
さきほどの「意味の地図」から近い位置にある情報を探します。
🧭 何が起きている?
- 「質問」→ベクトル化(Embedding)
- 「質問ベクトル」と近い文書ベクトルをスコア順で取得
- 上位n件の文書を抜き出す(一般的には3〜5件)
🔍 つまりこの工程は、「今の質問に一番近い情報を探す」という意味検索フェーズです。
🧠 ステップ③:生成(Generation)
= 見つけた情報を使って、AIが回答を作る
検索された文書(=文脈)を元に、ChatGPTなどのLLMが回答を生成します。
✨ ここで行われること
- 検索結果+ユーザーの質問 → プロンプトとして組み合わせ
- LLMに渡す(コンテキストウィンドウ内で)
- AIが自然な言葉で回答を生成
- 必要に応じて、引用元を添えて表示
📎 このステップにより、「根拠のある答え」をAIが出せるようになるのです。
3ステップの流れをまとめて図解!
【Step 1】インデックス 社内文書をベクトル化してベクトルDBに保存 【Step 2】検索 質問ベクトルと“意味が近い”文書を探す 【Step 3】生成 見つけた文書を使って、LLMが回答を作成 → 根拠付きの自然な回答が返ってくる!
どこに工夫の余地があるの?
RAGの精度や信頼性は、各ステップでの「設計の質」によって大きく左右されます。
ステップ | 改善ポイント |
---|---|
インデックス | 文書の分割方法・不要な情報の除外・メタデータ設計 |
検索 | ベクトル化の精度・検索件数の調整・ハイブリッド検索の活用 |
生成 | プロンプトの設計・LLMの選定・引用表示の工夫 |
特にプロンプト設計と情報の分割の仕方は、現場での精度向上に大きな影響を与える重要ポイントです。
実務でのイメージ(例:社内FAQ対応)
💬 質問例:
「有給休暇はいつまでに申請すればいいですか?」
🧩 インデックス:
就業規則、社内ポータル、FAQをベクトル化・保存
🔍 検索:
「申請期限」などの記載を含むページをベクトル検索
🧠 生成:
「有給休暇の申請は3営業日前までに必要です」など、規則に基づいた回答を出力
📎 出典:
「(就業規則 第10条より)」などを明記
まとめ:RAGは「検索→生成」の協調プレー
- RAGは「インデックス」「検索」「生成」の3ステップから構成されている
- 文書の分割やベクトル化(インデックス)が土台
- ベクトル検索で“意味の近い情報”を探し出すのがカギ
- LLMが情報を読み取り、人間の言葉で答えを生成
- 各ステップに工夫を加えることで、AIの回答精度を大きく向上できる!
Best regards, (^^ゞ