A
AIエージェントの仕組み
ch5-s1 · Why RAG

なぜ RAG が必要か

約 12 分

この回のゴール

1. 前章までの復習

第 4 章でツール付き LLM を学びました。ツールで解決できるもの:

限界 ツールで解決?
大きな計算 calculator
現在時刻 get_current_time
外部アクション send_email など
社内文書の内容
未学習の専門知識
最新の論文・ニュース

→ 下の 3 つは「大量のテキストから関連情報を見つけて渡す」必要があり、ツール 1 関数だけでは難しい。

2. 3 つの課題

課題①: ハルシネーション

LLM は 知らないことを「知っているふり」 します。

例:

Q: 「ネオテック株式会社の有給休暇制度について教えて」 A: 「ネオテック株式会社は年間 20 日の有給休暇を提供し、取得率は 90% です。」

これが 完全な嘘(会社自体が架空、または公開情報がない)であることを LLM は自信満々に言います。

課題②: 知識カットオフ

LLM は 学習時点まで の情報しか知りません。

課題③: Context 長の限界

「じゃあ全部プロンプトに貼ればいい」と思うかもしれませんが:

3. 解決策: RAG (Retrieval-Augmented Generation)

必要な部分だけ 取ってきて、LLM に渡す」

┌─────────────┐            ┌──────────┐
│  ユーザー     │──────────▶│   LLM    │
└─────────────┘            └────┬─────┘
                                │ ❓計算が必要
                                │ 「calculator ツール使おう」
                                ▼
                        ┌──────────────┐
                        │ calculator() │◀── あなたのコード
                        └──────┬───────┘
                               │ 結果: 655199895003
                               ▼
                        ┌──────────┐
                        │   LLM    │
                        └────┬─────┘
                             │ 「答えは 655,199,895,003 です」
                             ▼
                     ┌─────────────┐
                     │  ユーザー     │
                     └─────────────┘

3 つの段階:

  1. Retrieval(検索) — 質問に関連する文書を取ってくる
  2. Augmentation(拡張) — 質問と一緒にプロンプトに入れる
  3. Generation(生成) — Claude が 渡された情報に基づき 答える

4. RAG の数式的な本質

通常の LLM: $$ p(\text{answer} \mid \text{question}) $$

RAG: $$ p(\text{answer} \mid \text{question}, \text{retrieved_docs}) $$

条件付ける情報を増やす ことで、分布を「正しい答え」に集中させる。

これは第 2 章の生成モデルの理論そのまま: - 「文脈が増えれば分布が sharpen する」 - 「適切な条件付けで尤度最大になる」

5. RAG のメリット

項目 効果
ハルシネーション削減 根拠の文書を見せれば嘘をつきにくい
最新情報への対応 文書 DB を更新すればモデル再学習不要
ソース追跡 「どの文書から引いたか」を提示できる
社内情報対応 非公開資料でも扱える
コスト効率 必要な部分だけ送るので料金抑制

まとめ

この回の限界(次への動機)

手動で「関連段落を選ぶ」のは現実的でない。1 万件の文書から自動で関連を見つけるには? 👉 次回「ベクトルストア構築」で、埋め込み + FAISS による高速ベクトル検索を実装します。

参考文献

📝 理解度クイズ (3 問) 💡 ログインすると進捗が保存されます

💬 このサブステップの Q&A

まだ質問はありません。最初の質問を投稿してみましょう。

質問の投稿にはログインが必要です。