Retrieval-Augmented Generation。外部知識ベースの検索とLLM生成の統合。幻覚軽減と知識の動的更新。
最終更新:2025年11月
RAG(Retrieval-Augmented Generation)(Lewis et al. 2020):
外部知識を検索し、その情報を基にLLMが回答を生成。
| 課題 | RAGによる解決 |
|---|---|
| 知識の古さ | 最新データを検索可能 |
| 幻覚(ハルシネーション) | 根拠に基づく回答 |
| ドメイン知識の不足 | 専門文書を参照 |
| 出典の不明確さ | 参照元を提示可能 |
| 観点 | RAG | ファインチューニング |
|---|---|---|
| 知識更新 | 即時(データ追加のみ) | 再訓練が必要 |
| コスト | 低(推論時のみ) | 高(訓練コスト) |
| 出典 | 明示可能 | 困難 |
| 適用範囲 | 事実的知識 | スタイル・形式 |
1. 質問: 「Transformerとは何ですか?」
↓
2. 検索: 質問をベクトル化、関連文書を検索
↓
3. コンテキスト構築: 検索結果を整理
↓
4. 生成: LLMが検索結果を参照して回答
↓
5. 回答: 「Transformerは2017年に提案された...」
┌─────────────────────────────────────┐
│ RAGシステム │
├─────────────────────────────────────┤
│ [Data Ingestion] │
│ 文書 → チャンキング → 埋め込み │
│ ↓ │
│ [Vector Store] │
│ ベクトルDB(Pinecone, Chroma等) │
│ ↓ │
│ [Retriever] │
│ クエリ → 検索 → 関連文書 │
│ ↓ │
│ [Generator] │
│ コンテキスト + 質問 → LLM → 回答 │
└─────────────────────────────────────┘
| モデル | 特徴 |
|---|---|
| OpenAI text-embedding-3 | 高性能、API利用 |
| Cohere Embed | 多言語対応 |
| BGE | オープンソース、高性能 |
| E5 | Microsoft、多言語 |
| GTE | Alibaba、汎用 |
| DB | 特徴 |
|---|---|
| Pinecone | マネージド、スケーラブル |
| Weaviate | オープンソース、ハイブリッド検索 |
| Chroma | 軽量、開発向け |
| Qdrant | Rust実装、高速 |
| pgvector | PostgreSQL拡張 |
検索結果を再順位付け:
| 方法 | 説明 |
|---|---|
| 固定長 | 一定の文字数/トークン数で分割 |
| 文・段落単位 | 自然な区切りで分割 |
| セマンティック | 意味的なまとまりで分割 |
| 再帰的 | 階層的に分割 |
チャンク間で重複を持たせる:
以下のコンテキストを参照して質問に答えてください。
コンテキストに情報がない場合は「わかりません」と答えてください。
コンテキスト:
{retrieved_documents}
質問: {user_question}
回答:
回答を生成する際、情報の出典を[1], [2]のように示してください。
コンテキスト:
[1] 文書A: ...
[2] 文書B: ...
質問: ...
回答: Transformerは2017年に提案されました[1]。
Asai et al. (2023):検索の必要性を自己判断。
検索結果の品質を評価・修正:
エージェントがRAGを制御:
知識グラフとの統合:
| 指標 | 対象 |
|---|---|
| Retrieval Precision | 検索結果の関連性 |
| Retrieval Recall | 関連文書の網羅性 |
| Answer Relevance | 回答の質問への関連性 |
| Faithfulness | 回答とコンテキストの整合性 |
| Answer Correctness | 回答の正確性 |