RAG(検索拡張生成)の実践ガイド
RAGとは
RAG(Retrieval-Augmented Generation)は、LLMの回答精度を向上させるために、外部のナレッジベースから関連情報を検索し、それをコンテキストとして与える手法です。
なぜRAGが重要なのか
LLM単体の限界
- 学習データのカットオフ以降の情報を知らない
- 社内固有の情報(製品仕様、社内規程等)を知らない
- ハルシネーション(事実でない情報の生成)のリスク
RAGが解決すること
- 最新情報の反映: 常に最新のドキュメントを参照
- 社内知識の活用: 社内文書をナレッジベース化
- 根拠の明示: 回答の根拠となるドキュメントを提示可能
RAGパイプラインの構成
1. ドキュメント取り込み(Ingestion)
→ テキスト抽出 → チャンキング → エンベディング → ベクトルDB保存
2. 検索(Retrieval)
→ クエリのエンベディング → 類似検索 → リランキング
3. 生成(Generation)
→ 検索結果 + ユーザー質問 → LLMに入力 → 回答生成
チャンキング戦略
| 戦略 | 説明 | 適用場面 |
|---|---|---|
| 固定長分割 | 500-1000トークンで分割 | 汎用的 |
| 意味的分割 | 段落・セクション単位 | 構造化文書 |
| 再帰的分割 | 見出し→段落→文の順に分割 | 長文 |
| 親子分割 | 大きなチャンク内に小チャンクを含む | 精度重視 |
ベクトルデータベースの選定
| DB | 特徴 | 適用 |
|---|---|---|
| pgvector | PostgreSQLの拡張 | 既存PG環境 |
| Pinecone | フルマネージド | 大規模・本番 |
| Weaviate | オープンソース | セルフホスト |
| Qdrant | 高性能 | パフォーマンス重視 |
| Supabase | pgvector + Auth | フルスタック |
Advanced RAGテクニック
1. ハイブリッド検索
セマンティック検索(ベクトル)とキーワード検索(BM25)を組み合わせ。
2. リランキング
検索結果をCross-Encoderモデルで再評価し、最も関連性の高い結果を選択。
3. クエリ拡張
ユーザーのクエリをLLMで言い換え・拡張し、検索の網羅性を向上。
4. Self-RAG
LLMが自ら検索の必要性を判断し、検索結果の品質を自己評価。
評価指標
| 指標 | 説明 |
|---|---|
| Recall@k | 上位k件に正解が含まれる割合 |
| MRR | 正解の平均順位の逆数 |
| Faithfulness | 回答が検索結果に忠実か |
| Relevancy | 回答がユーザー質問に関連しているか |
まとめ
RAGはAI Agentの知識基盤として不可欠な技術です。適切なチャンキング、エンベディングモデル、検索戦略の選択が、Agentの回答品質を大きく左右します。