結論
「LLMに外部知識を食べさせる技術」
LLMが知らない情報(社内文書、最新ニュースなど)を検索して、回答の精度を上げる手法。
一言で言うと
┌─────────────────────────────────────────────────────────┐
│ │
│ RAG = Retrieval-Augmented Generation │
│ 検索拡張生成 │
│ │
│ 「LLMに質問する前に、関連情報を検索して │
│ 一緒に渡すことで、回答の精度を上げる」 │
│ │
│ ・2020年、Meta AI(当時Facebook AI)が提唱 │
│ ・現在、エンタープライズAIの中核技術 │
│ ・Dify、LangChain、n8nなどで簡単に構築可能 │
│ │
└─────────────────────────────────────────────────────────┘
なぜRAGが必要?
┌─────────────────────────────────────────────────────────┐
│ │
│ 【LLMの弱点】 │
│ │
│ 1. 知識のカットオフ │
│ 学習データ以降の情報を知らない │
│ 「2024年の選挙結果は?」→ 答えられない │
│ │
│ 2. ハルシネーション(幻覚) │
│ 知らないことも自信満々に答える │
│ 「弊社の返品ポリシーは?」→ 嘘をつく │
│ │
│ 3. 社内情報を知らない │
│ 機密文書、内部ナレッジにアクセス不可 │
│ │
│ ──────────────────────────────────────────── │
│ │
│ 【RAGで解決】 │
│ │
│ 質問に関連する情報を検索 → LLMに渡す → 回答生成 │
│ │
│ 「参考資料付きで質問する」イメージ │
│ │
└─────────────────────────────────────────────────────────┘
RAGの仕組み
┌─────────────────────────────────────────────────────────┐
│ │
│ 【ステップ1: インデックス作成(事前準備)】 │
│ │
│ 社内文書・FAQ・マニュアル │
│ ↓ │
│ チャンク分割(小さく分ける) │
│ ↓ │
│ ベクトル化(Embedding) │
│ ↓ │
│ ベクトルDB(Pinecone, Chroma等)に保存 │
│ │
│ ──────────────────────────────────────────── │
│ │
│ 【ステップ2: 検索 & 生成(実行時)】 │
│ │
│ ユーザーの質問 │
│ ↓ │
│ 質問をベクトル化 │
│ ↓ │
│ ベクトルDBで類似検索 │
│ ↓ │
│ 関連するチャンクを取得 │
│ ↓ │
│ 質問 + 関連情報 → LLMに渡す │
│ ↓ │
│ 回答生成(出典付き) │
│ │
└─────────────────────────────────────────────────────────┘
図解
【従来のLLM】
ユーザー: 「弊社の返品ポリシーは?」
│
▼
┌─────────┐
│ LLM │ ← 学習データにない情報
└─────────┘
│
▼
「一般的に返品は30日以内...」 ← ハルシネーション!
【RAGを使った場合】
ユーザー: 「弊社の返品ポリシーは?」
│
├──────────────┐
▼ ▼
┌─────────┐ ┌─────────────┐
│ 質問の │ │ ベクトルDB │
│ベクトル化│ │(社内文書) │
└─────────┘ └─────────────┘
│ │
└──────┬───────┘
▼
類似度検索で関連文書を取得
│
▼
┌─────────────────────────────┐
│ 質問 + 関連文書 → LLM │
└─────────────────────────────┘
│
▼
「弊社の返品ポリシーは購入後14日以内、
未開封に限り...」 ← 正確な回答!
ベクトル検索とは
┌─────────────────────────────────────────────────────────┐
│ │
│ 【従来のキーワード検索】 │
│ │
│ 「返品」で検索 → 「返品」という単語を含む文書のみ │
│ │
│ 問題: 「返金」「払い戻し」「キャンセル」は │
│ ヒットしない │
│ │
│ ──────────────────────────────────────────── │
│ │
│ 【ベクトル検索(意味検索)】 │
│ │
│ 文章を数百次元のベクトル(数値の配列)に変換 │
│ 意味が近い文章 = ベクトルが近い │
│ │
│ 「返品ポリシーは?」で検索 │
│ → 「返金」「払い戻し」「キャンセル」も │
│ 意味的に近いのでヒット! │
│ │
└─────────────────────────────────────────────────────────┘
RAGの進化
┌─────────────────────────────────────────────────────────┐
│ │
│ 【Naive RAG(初期)】 │
│ シンプルな検索 → 生成 │
│ │
│ 【Advanced RAG】 │
│ ・クエリ書き換え │
│ ・ハイブリッド検索(ベクトル + キーワード) │
│ ・Reranking(再ランキング) │
│ │
│ 【Modular RAG(最新)】 │
│ ・モジュール化されたパイプライン │
│ ・複数の検索戦略を組み合わせ │
│ ・フィードバックループ │
│ │
└─────────────────────────────────────────────────────────┘
RAGとファインチューニングの違い
┌────────────────┬─────────────────┬─────────────────────┐
│ 項目 │ RAG │ ファインチューニング │
├────────────────┼─────────────────┼─────────────────────┤
│ 手法 │ 検索して渡す │ モデル自体を再学習 │
├────────────────┼─────────────────┼─────────────────────┤
│ コスト │ 低い │ 高い │
├────────────────┼─────────────────┼─────────────────────┤
│ 更新 │ 簡単(DB更新) │ 再学習が必要 │
├────────────────┼─────────────────┼─────────────────────┤
│ 最新情報 │ ◎ 対応可能 │ △ 再学習必要 │
├────────────────┼─────────────────┼─────────────────────┤
│ 出典表示 │ ◎ 可能 │ ✗ 困難 │
├────────────────┼─────────────────┼─────────────────────┤
│ ユースケース │ Q&A、検索 │ 文体・専門知識の習得│
└────────────────┴─────────────────┴─────────────────────┘
結論: ほとんどのユースケースでRAGが第一選択
主要なベクトルDB
【クラウド】
・Pinecone: 最も人気、マネージド
・Weaviate: オープンソース + クラウド
・Qdrant: 高性能
【セルフホスト】
・Chroma: 軽量、開発向け
・Milvus: 大規模向け
・pgvector: PostgreSQL拡張
・FAISS: Meta製、ローカル向け
RAGを構築できるツール
┌─────────────────────────────────────────────────────────┐
│ │
│ 【ノーコード/ローコード】 │
│ ・Dify: ◎ RAG特化、最も簡単 │
│ ・Flowise: ○ ビジュアルで構築 │
│ ・n8n: ○ ワークフローにRAG組み込み │
│ │
│ 【コードベース】 │
│ ・LangChain: ◎ 最も柔軟、Python/JS │
│ ・LlamaIndex: ◎ RAG特化フレームワーク │
│ │
│ 【API/サービス】 │
│ ・OpenAI Assistants: 簡単だがカスタマイズ制限 │
│ ・Azure AI Search: エンタープライズ向け │
│ │
└─────────────────────────────────────────────────────────┘
ユースケース
┌─────────────────────────────────────────────────────────┐
│ │
│ 【社内ナレッジ】 │
│ ・社内FAQ Bot │
│ ・規定・マニュアル検索 │
│ ・新人教育アシスタント │
│ │
│ 【カスタマーサポート】 │
│ ・製品Q&A │
│ ・トラブルシューティング │
│ ・チケット自動分類 │
│ │
│ 【専門分野】 │
│ ・法律文書検索 │
│ ・医療情報アシスタント │
│ ・金融レポート分析 │
│ │
│ 【コンテンツ】 │
│ ・ドキュメント要約 │
│ ・レポート生成 │
│ ・競合分析 │
│ │
└─────────────────────────────────────────────────────────┘
強みと弱み
【強み】
✓ ハルシネーション軽減
✓ 最新情報・社内情報に対応
✓ 出典を表示可能(信頼性)
✓ ファインチューニングより安価
✓ 知識の更新が簡単
【弱み】
✗ 検索精度に依存(ゴミを入れるとゴミが出る)
✗ チャンク分割の設計が重要
✗ 複雑な推論は苦手
✗ ベクトルDBの運用コスト
関連ツールとの関係
┌─────────────────────────────────────────────────────────┐
│ │
│ 【RAGを構築するためのツール】 │
│ │
│ Dify: RAGアプリをノーコードで構築 │
│ LangChain: RAGパイプラインをコードで構築 │
│ Flowise: LangChainをノーコードで使う │
│ │
│ 【RAGと組み合わせるプロトコル】 │
│ │
│ MCP: RAGエージェントに外部ツールを追加 │
│ A2A: RAGエージェント同士を連携 │
│ │
│ 【RAGを自動化ワークフローに組み込む】 │
│ │
│ n8n / Zapier / Make: 自動化フローにRAGを統合 │
│ │
└─────────────────────────────────────────────────────────┘
まとめ
| 項目 | 内容 |
|---|---|
| 正式名称 | Retrieval-Augmented Generation |
| 提唱 | 2020年 Meta AI |
| 目的 | LLMの回答精度向上 |
| 仕組み | 検索 → 関連情報取得 → LLMに渡す |
| 主なツール | Dify, LangChain, LlamaIndex |
| ベクトルDB | Pinecone, Chroma, pgvector等 |
参考文献
AIエージェント・自動化シリーズ、お役に立てたらフォローお願いします!