導入
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章以降、この地図の順番でひとつずつ手を動かして学んでいく。