本文へスキップ
BecomeCoder

RAGコース · 第1章 RAGとは何か · レッスン2

RAGの全体像 ― 2つのフェーズ

ローカル実施

導入

RAGの仕組みをもう少し具体的に見ていきましょう。RAGは大きく2つのフェーズに分かれています。この地図を頭に入れておくと、これから学ぶ内容の位置づけが分かりやすくなります。

説明

1つ目は、質問が来るに済ませておくインデックス作成フェーズ(事前準備)。2つ目は、質問が来たその場で動く検索+生成フェーズです。

flowchart TD
  subgraph idx["① インデックス作成フェーズ(事前準備)"]
    d1["文書を集める"] --> d2["チャンク分割<br/>(小さな断片に切る)"]
    d2 --> d3["ベクトル化<br/>(embedding)"]
    d3 --> d4["ベクトルDBに保存"]
  end
  subgraph qt["② 検索+生成フェーズ(質問時)"]
    q1["質問を受け取る"] --> q2["質問をベクトル化"]
    q2 --> q3["近い文書を検索"]
    q3 --> q4["プロンプトに詰める"]
    q4 --> q5["LLMが答えを生成"]
  end
  d4 -.検索対象.-> q3

① インデックス作成フェーズでは、まず文書を集め、そのままでは長すぎるのでチャンク分割という作業で小さな断片に切り分けます。それぞれの断片をベクトル化(embedding)という方法で数値の列に変換し、あとで検索しやすいようにベクトルDBに保存しておきます。ここまでは、質問が来るずっと前に終わらせておく準備作業です。

② 検索+生成フェーズでは、ユーザーの質問が来たら、その質問自体も同じ方法でベクトル化し、ベクトルDBの中から意味が近い文書を検索します。見つかった文書をプロンプトに詰めてLLMに渡し、LLMがそれを根拠に答えを生成します。

このコースは、この地図の左上から右下へ順番に進んでいきます。

学ぶことフェーズ
第2章チャンク分割① インデックス作成
第3章ベクトルと検索① インデックス作成 → ② 検索
第4章生成につなぐ② 検索+生成
第5章精度向上①・②の改善
第6章まとめ全体の振り返り

まとめ

  • RAGは「①インデックス作成フェーズ(事前準備)」と「②検索+生成フェーズ(質問時)」の2段構え。
  • ①は 文書収集 → チャンク分割 → ベクトル化 → ベクトルDB保存。
  • ②は 質問のベクトル化 → 検索 → プロンプトに詰める → LLMが生成。
  • 第2章以降、この地図の順番でひとつずつ手を動かして学んでいく。