0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[1分でわかる]RAGってなんだ?

Posted at

結論

「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エージェント・自動化シリーズ、お役に立てたらフォローお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?