この回のゴール
- LLM が 知らない情報 をどう扱うべきかを考える
- RAG (Retrieval-Augmented Generation) の直感を掴む
- ハルシネーション、知識カットオフ、context 長の 3 つの課題を 体感 する
- 次回以降の「検索→渡す→答える」パイプラインの動機を固める
1. 前章までの復習
第 4 章でツール付き LLM を学びました。ツールで解決できるもの:
| 限界 | ツールで解決? |
|---|---|
| 大きな計算 | ✅ calculator |
| 現在時刻 | ✅ get_current_time |
| 外部アクション | ✅ send_email など |
| 社内文書の内容 | ❓ |
| 未学習の専門知識 | ❓ |
| 最新の論文・ニュース | ❓ |
→ 下の 3 つは「大量のテキストから関連情報を見つけて渡す」必要があり、ツール 1 関数だけでは難しい。
2. 3 つの課題
課題①: ハルシネーション
LLM は 知らないことを「知っているふり」 します。
例:
Q: 「ネオテック株式会社の有給休暇制度について教えて」 A: 「ネオテック株式会社は年間 20 日の有給休暇を提供し、取得率は 90% です。」
これが 完全な嘘(会社自体が架空、または公開情報がない)であることを LLM は自信満々に言います。
課題②: 知識カットオフ
LLM は 学習時点まで の情報しか知りません。
- Claude Opus 4.7 のカットオフ: 2026 年初頭
- それ以降の情報は絶対に入っていない
- 社内情報 や 非公開資料 は、そもそも学習データに含まれない
課題③: Context 長の限界
「じゃあ全部プロンプトに貼ればいい」と思うかもしれませんが:
- Claude 4.7 の context: 1M トークン = 約 75 万文字(日本語換算)
- 100 冊の本 = 約 3000 万文字 → 40 倍オーバー
- 仮に入るとしても: 料金が莫大、Claude が混乱しやすい、遅い
3. 解決策: RAG (Retrieval-Augmented Generation)
「必要な部分だけ 取ってきて、LLM に渡す」
┌─────────────┐ ┌──────────┐
│ ユーザー │──────────▶│ LLM │
└─────────────┘ └────┬─────┘
│ ❓計算が必要
│ 「calculator ツール使おう」
▼
┌──────────────┐
│ calculator() │◀── あなたのコード
└──────┬───────┘
│ 結果: 655199895003
▼
┌──────────┐
│ LLM │
└────┬─────┘
│ 「答えは 655,199,895,003 です」
▼
┌─────────────┐
│ ユーザー │
└─────────────┘
3 つの段階:
- Retrieval(検索) — 質問に関連する文書を取ってくる
- Augmentation(拡張) — 質問と一緒にプロンプトに入れる
- 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 を更新すればモデル再学習不要 |
| ソース追跡 | 「どの文書から引いたか」を提示できる |
| 社内情報対応 | 非公開資料でも扱える |
| コスト効率 | 必要な部分だけ送るので料金抑制 |
まとめ
- LLM の 3 つの構造的限界(ハルシネーション・知識カットオフ・コンテキスト長)を解決する手法が RAG
- 「質問に関連する部分だけを文書 DB から検索して、プロンプトに同梱する」のがコア
- 数学的には「条件付ける情報を増やして分布を sharpen」する操作
- ハルシネーション削減・最新情報対応・ソース追跡 などの実務的メリット
この回の限界(次への動機)
手動で「関連段落を選ぶ」のは現実的でない。1 万件の文書から自動で関連を見つけるには? 👉 次回「ベクトルストア構築」で、埋め込み + FAISS による高速ベクトル検索を実装します。
参考文献
- Lewis et al. (2020) Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — RAG 原論文
- Anthropic Contextual Retrieval