Contents
想定読者と前提条件
想定読者はMLエンジニア、バックエンドエンジニア、導入担当者です。
RAGとMCPの技術的違いや運用上の判断軸を短期間で比較し、PoC→採用判断に落とし込みたい方向けにまとめます。
前提条件として、LLMの利用権(APIキーやオンプレ環境)、ベクトルDBや実験環境、CI/監査ログを用意できることを想定します。
結論サマリ
用途次第で最適解が分かれます。参照応答やナレッジ検索はRAGが効率的です。
外部操作やトランザクションが必要な場合はMCPの方が安全に実行できます。
実務ではRAGで根拠を提示し、MCPを安全な実行層として組み合わせる併用が最も汎用的です。
アーキテクチャ比較:典型的なデータフローと代表スタック
ここではRAGとMCPの典型的処理フローを整理し、実務で検討すべき代表スタック例を示します。
比較軸はデータフロー、ボトルネック、導入難度、レイテンシ・コスト・精度です。
典型的なデータフロー(RAG)
RAGは外部ナレッジを検索してLLMの出力を補強する、一方向の検索→生成フローです。以下は典型的な手順です。
- データ収集:ドキュメント、FAQ、DBエクスポートを集めます。
- 前処理:意味単位でチャンク化し、メタデータを付与します。
- 埋め込み生成:チャンクごとに埋め込みを作成します。
- ベクトルDB格納:PineconeやQdrantなどにインデックスします。
- Retriever:クエリ埋め込みで候補を取得します。
- 再ランキング(任意):cross-encoderなどで上位を精査します。
- LLM生成:取得文書をプロンプトに組み込み応答を生成します。
- 後処理:根拠提示や出典IDの付記を行います。
RAGはretrieval品質に依存します。retrieverが不適切だと誤情報が混入しやすい点に注意してください。
典型的なデータフロー(MCP)
MCPはモデルが外部リソースやツールを呼び出し、双方向のワークフローを扱う点が特徴です。以下は代表的な流れです。
- クライアントがMCPサーバへ要求を送ります。
- MCPサーバは登録されたresourcesとcapabilitiesを管理します。
- モデルが外部リソースへのアクセスを要求するコマンドを返します。
- サーバが認可・検証を行い、コネクタを介してツールを呼び出します。
- ツール結果をサーバが受け取り、モデルへ返却します。
- モデルが受領データを元に最終応答を組み立てます。
MCPは操作系(カレンダー登録やDB更新など)を安全に仲介する点で優位ですが、認可やトランザクション設計が必須です。
代表的なスタック例
代表的な構成要素と一般的な選択肢を示します。導入前に公式ドキュメントでサポート状況を確認してください。
- 埋め込み: OpenAI埋め込み、Sentence-Transformers、モデル付属の埋め込み。
- ベクトルDB: Pinecone、Qdrant、Weaviate、Milvus など。
- RAGライブラリ/Orchestration: LangChain、LlamaIndex 等のフレームワークが一般的です。
- 再ランキング: cross-encoder(Hugging Face)やMMR(最大マージナル再率)実装。
- MCP関連: Model Context Protocol(MCP)はAnthropicが提案しており、仕様は公式サイトで公開されています(https://modelcontextprotocol.io/docs/getting-started/intro、参照: 2024-08-01)。採用状況は変化が早いため、各ベンダーの公式発表を確認してください。
- LLM: OpenAI、Anthropic、オンプレやプライベートモデルなど、要件に応じて選びます。
ベンダー選定は性能だけでなく、法令順守、データ同居/リージョン、SLA、運用性で判断してください。
用語と注釈
主要な専門用語の簡潔な定義を示します。設計上よく出てくる語を中心に説明します。
検索系の用語
検索系で頻出する語の要点をまとめます。
- Retriever: ユーザクエリに対して関連文書を返す機構です。denseは埋め込み、sparseはBM25などの辞書ベース、hybridは両者を組合せます。
- cross-encoder: クエリと文書を同時に入力し高精度で再評価するモデルです。精度が高い反面コストが増えます。
- MMR: 最大マージナル再率(Maximal Marginal Relevance)。冗長除去を行い、多様性のある上位kを選ぶ手法です。
- HNSW: 層状グラフを使う近傍探索アルゴリズムで、検索速度とメモリのトレードオフがあります。
- IVF: Inverted File Index。クラスタリングベースの索引で、大規模データのスケーラビリティ向上に使います。
- 埋め込み(embedding): テキストをベクトル化した表現です。次元数や正規化方法が検索に影響します。
MCP・オーケストレーション系の用語
MCPや実行制御で出てくる語を整理します。
- MCP(Model Context Protocol): モデルと外部リソースの相互作用を標準化する仕様です。能力(capabilities)や認可を明示する設計が中心です。
- capability: モデルが呼び出せる操作(例: read-calendar, create-ticket)を表す宣言です。最小権限設計で定義します。
- connector / コネクタ: MCPサーバ側で外部APIやDBに接続する実装コンポーネントです。隔離とサンドボックス化が重要です。
RAGの構成要素と実装ポイント
RAG導入で重要になるのは埋め込み品質、インデックス設計、retriever、プロンプト運用です。ここでは実務上の優先事項と具体的な設計ポイントを示します。
埋め込み生成とベクトルDB設計
埋め込みは検索精度とコストに直結します。次の点を設計に取り入れてください。
- モデル選定: 高精度モデルはコスト増、軽量モデルはコスト低減の代わりに精度差が出ます。ユースケースで選びます。
- バッチ処理: 大規模データはバッチ化し、レート制御・リトライを組みます。継続的取り込みは差分埋め込み戦略を使います。
- 次元と正規化: 埋め込み次元はモデル依存です。距離計算前に正規化を統一しておくと一貫したスコアが得られます。
- インデックス選択: HNSWはレイテンシ重視、IVFは大規模データのコスト削減に有利です。メモリとスループットのトレードオフを評価してください。
- メタデータ設計: 出典ID、タイムスタンプ、信頼度を格納し、フィルタ検索や監査に利用します。
- 可用性: シャーディングやレプリカ戦略、バックアップと復旧手順を用意します。
実務ポイントとして埋め込みのバージョン管理とインクリメンタル再インデックス戦略を必須で設計してください。
retriever・再ランキング・プロンプト運用
retriever とプロンプト設計で最終応答の質が決まります。以下を実務で評価します。
- Retrieverの選択: dense / sparse / hybridをユースケースで比較します。FAQはsparseで十分な場合があります。
- k値と閾値: 上位k件の数やスコア閾値は実験で最適化します。過剰な根拠提示は逆効果です。
- 再ランキングの導入: cross-encoderで精度向上が見込めますが、レイテンシとコスト増に注意してください。
- プロンプト設計: 取得文書には出典IDとスコアを明示し、systemメッセージで「出典に基づかない事実は作らない」と明示します。
- 根拠不足時の挙動: 根拠が不足する場合の標準応答(例:「該当情報が見つかりません」)を定義しておきます。
- 運用: CIでデータ整合性チェック、定期的な再インデックス、変更履歴の監査を組み込みます。
計測指標としてはrecall@k、MRR、出典一致率を定期的に収集して可観測化します。
MCPの仕様概要と実装ポイント
MCPの実装ではcapabilities管理、認証・検証、コネクタの隔離、トランザクション管理が設計の核です。実装方針を整理します。
MCPサーバ/クライアント設計
MCPサーバはモデルとツールの仲介役として安全性と可観測性を優先します。
- メッセージモデル: イベント/コマンド/レスポンスの流れとタイムアウトを明確に設計します。
- ストリーミング: 長時間処理や中間結果がある場合はストリーミングを導入し、クライアントに逐次伝えます。
- 同期/非同期: 外部操作は同期と非同期を使い分け、キューやワーカー設計を採用します。
- ロールバック設計: 外部操作の副作用を想定し、idempotencyキーや補償トランザクションで整合性を保ちます。
- 可観測性: すべてのツール呼び出しにトレーシングIDと監査ログを付与します。
PoCでは軽量なMCPサーバ実装でフローを確認し、段階的に機能を追加してください。
リソース表現・capabilities登録・認証とコネクタ実装
リソースとcapabilitiesは最小権限で設計し、コネクタは隔離します。
- スキーマ定義: リソースごとに入力/出力スキーマを明確にし、バリデーションを自動化します。
- 最小権限: モデルが利用可能な操作はcapabilityで限定し、段階的に拡張します。
- 認証方式: OAuthや短期トークン、シークレット管理(Vault等)でキーを分離します。
- コネクタ隔離: 外部APIはサンドボックス化し、レート制御や回路遮断を実装します。
- 監査ログ: 誰がいつどの操作を起こしたかをトレース可能に記録します。
- 導入フェーズ: PoCはread-onlyコネクタで検証し、段階的に書き込みコネクタへ移行します。
実務では「テスト環境でのコネクタ認可フロー」と「本番での最小権限化」を厳格に運用してください。
性能・品質・セキュリティ・コスト比較と技術的トレードオフ
設計判断には精度、レイテンシ、コスト、可観測性、セキュリティのトレードオフが絡みます。主要観点を整理します。
正確性と根拠提示
RAGは外部文書を根拠として提示しやすく、retrieval品質が高いほど事実性が向上します。MCPは信頼できるAPI結果を直接取得し、操作系では誤情報を減らせます。ただしどちらもプロンプトやロジック次第で誤情報は発生します。
レイテンシ・コスト・可観測性
レイテンシはRAGでは検索+生成、MCPではモデル↔サーバ↔外部APIの往復が主因です。P95やP99をSLOに設定し、キャッシュや非同期化で改善します。コストはRAGが埋め込み生成とベクトルDB運用、MCPが外部API呼出しやオーケストレーション運用コストに左右されます。可観測性は両者とも重要ですが、MCPは監査ログ要件がより厳しくなります。
セキュリティ・コンプライアンス
双方とも認証・認可、監査ログ、PII検出とマスキング、データ保持ポリシーが必須です。MCPは外部API連携による追加リスク(シークレット流出や不正操作)に留意し、コネクタ隔離と最小権限化を徹底してください。規制対応が必要なユースケースではデータ居住地やDPA(データ処理契約)の確認、オンプレ運用の選択を検討します。
比較テーブル(概観)
次の表は代表的なトレードオフを概観するための定性的比較です。実値は実環境で測定してください。
| パターン | 主な用途 | 精度(傾向) | レイテンシ(傾向) | コスト構造 | 備考 |
|---|---|---|---|---|---|
| RAG | ナレッジ検索、FAQ | 中〜高(retrieval依存) | 低〜中(検索+生成) | 埋め込み、検索、LLMトークン | 根拠提示がしやすい |
| MCP | 操作実行、トランザクション | 高(信頼API依存) | 中〜高(往復多) | LLMトークン、外部API呼出し | 操作安全設計が必須 |
| RAG + MCP | 情報取得 → 安全実行 | 高(両方の強み) | 中〜高 | 両者の合算 | 情報取得と実行の分離で安全性向上 |
PoC設計・チェックリスト、評価指標、併用パターン、意思決定マトリクス、FAQ
PoCは短期間で差を可視化することが目的です。以下は実務で使える詳細なチェックリストと測定方法、合格基準の例です。
短期PoCチェックリスト(1〜2週間)
同一ユースケース・同一評価セットで比較する設計が重要です。手順の例を示します。
- 成功基準を定義する(主要ユースケースとKPIを明確化)。
- 小規模データ準備:100〜1,000文書にメタデータを付与する。
- 評価クエリセット作成:50〜200問(事実問答、曖昧問、操作要求、コンプライアンス系を含む)。
- RAG最小実装:埋め込み生成→ベクトルDB投入→retriever→LLM統合を実装。
- MCP最小実装:軽量MCPサーバまたは参照実装でread-onlyコネクタを登録。
- 計測仕組み:ログ、レイテンシ分解、費用集計、トレーシングを組み込む。
- 並列評価:同一クエリで両者を比較し、手動レビュワーで正誤と根拠一致を判定する。
- 集計と意思決定:Accuracy、Evidence Match、P95レイテンシ、コスト/クエリ、運用工数で比較する。
推奨体制(PoC期間): MLエンジニア1名、バックエンド1名、ドメインレビュワー1名で短期実施可能です。
評価指標と測定方法(例)と合格基準サンプル
測定方法は再現可能に定義してください。以下はサンプルです。
| 指標 | 測定方法 | サンプル合格基準(例) |
|---|---|---|
| 正答率(Accuracy) | ゴールドアンサセットとの比較(手動レビュ) | FAQ: ≥90% / 複雑問: ≥80% |
| 根拠一致率(Evidence Match) | モデルが提示した出典IDとゴールド出典の一致率 | ≥85% |
| ハルシネーション率 | 根拠なしで誤情報を生成した割合(レビュ計測) | ≤2〜5%(業界リスクに応じ調整) |
| レイテンシ(P95) | 実稼働想定のクエリでP95を計測 | FAQ: P95 ≤ 1.5s(目安) |
| Cost/クエリ | 埋め込み・検索・トークン・外部API費用の合計 | 組織の予算に基づく閾値設定 |
| 運用エラー率 | オペレーションによる失敗割合 | 本番許容値に合わせ設定 |
サンプル合格基準は業界やリスクにより変化します。金融/医療等は閾値を厳しくしてください。
併用パターンと意思決定マトリクス
よく使われるパターンと推奨方針を示します。
-
併用パターン(例):
ユーザクエリ → RAGで関連法規やFAQを取得(根拠提示) → モデルが判断 → MCP経由で安全に操作(承認ワークフロー実行) → 実行結果を根拠付きで返却。 -
意思決定マトリクス(運用視点)
| ユースケース | 即時性 | 正確性 | 操作実行 | 推奨 |
|---|---|---|---|---|
| FAQ / ナレッジ検索 | 高 | 中 | なし | RAG優先 |
| コンプライアンス検証 | 中 | 高 | なし | RAG + 再ランキング |
| チャット支援(操作なし) | 高 | 中 | なし | RAG |
| 業務自動化・トランザクション | 中 | 高 | あり | MCP優先 |
| 高正確性かつ実行 | 低 | 高 | あり | RAG + MCP併用 |
FAQ(要点)
-
MCPはRAGを置き換えますか?
ユースケース次第です。検索中心の参照応答はRAGが合理的です。操作やトランザクションが重要ならMCPが適します。完全な置換は一般化できません。 -
既存RAG資産は再利用できますか?
多くは再利用可能です。埋め込みやベクトルDB、評価クエリはMCPの補助検索や情報ソースとして組み込めます。 -
コストはどちらが高いですか?
ケースバイケースです。埋め込み頻度、外部API呼出し頻度、運用工数で変わるためPoCで実測してください。
実装例(軽量サンプル)と選定基準
実装ハードルを下げるための簡単なコード例と、ベンダー選定で重視すべき基準を示します。サンプルは概念的なものです。
RAG の最小サンプル(Python擬似コード)
以下は検索→LLMに渡す流れの概念例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# 概念コード(擬似) from embedding_lib import embed_text from vector_db import vector_search from llm_client import call_llm query = "製品Xの返品ポリシーは?" q_vec = embed_text(query) docs = vector_search(q_vec, top_k=5) # 出典IDとスコアを含む prompt = build_prompt(query, docs) # 出典IDを明記するテンプレート response = call_llm(prompt) print(response) |
実装ではバッチ処理、埋め込みバージョン管理、出典IDの付与、再ランキングを追加してください。
MCP の最小サンプル(概念フロー)
MCPではモデルがツール呼び出しを返すことを想定します。以下はサーバ側の骨格です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 概念コード(擬似) from fastapi import FastAPI, Request app = FastAPI() @app.post("/mcp/command") async def handle_command(req: Request): payload = await req.json() # payload に含まれる capability を検証 if not authorize(payload["capability"], payload["caller"]): return {"error": "unauthorized"} result = call_connector(payload["resource"], payload["input"]) # 監査ログを残す audit_log(payload, result) return {"result": result} |
実装ではスキーマバリデーション、トレーシングID、idempotencyキー、トークン管理を追加してください。
選定基準(中立)
ベンダーやツールを選ぶ際は次を重視してください。
- セキュリティとコンプライアンス対応(データ居住地、DPA、認証)。
- スケーラビリティとレイテンシ実績。
- 運用性(監査ログ、モニタリング、GUI)。
- オンプレ/プライベート対応の可否。
- エコシステムとコミュニティ(LangChain / LlamaIndex のサポート状況等)。
- コストモデルの明瞭さ(検索課金、ストレージ課金、トークン課金)。
外部事例や採用状況は短期間で変化するため、各社の公式ドキュメントやリリースノートを確認してください(例: Model Context Protocol公式 https://modelcontextprotocol.io/docs/getting-started/intro、参照: 2024-08-01)。
セキュリティとコンプライアンス(実務向け注意点)
特にPIIや規制分野で運用する場合の具体的対策を示します。運用前に法務/セキュリティ担当と必ず確認してください。
データ最小化と前処理
- PIIは可能な限りマスキングまたはトークン化して保存します。
- ベクトルDBに保存するメタデータは最小限にし、実際の個人情報はリンク先で管理します。
- 埋め込み前に不要フィールドを除去し、匿名化バッチを適用します。
データ居住地と転送
- 規制があるリージョンではベクトルDBやコネクタを同リージョンに配置します。
- クロスボーダー転送が必要な場合はDPAや適切な法的根拠を確保します。
シークレットとコネクタの隔離
- APIキーや資格情報はVaultで管理し、短期トークンを用います。
- 外部APIコネクタは別環境で動かし、回路遮断やレート制御を実装します。
- モデル出力にシークレットが漏れた場合の検出・遮断ルールを用意します。
監査と保持ポリシー
- すべてのツール呼び出しにトレーシングIDを付与し監査ログを記録します。
- ログの保存期間とアクセス制御を定義し、法令要件に従って保持・削除します。
運用ルール(例)
- PoC段階はread-onlyコネクタのみで検証し、書き込みは段階的に有効化する。
- 本番で操作が絡む場合は二要素の承認ワークフローを実装する。
- ハイリスクな操作は人間の承認ステップを必須にする。
参考実装・公式情報(例)
- Model Context Protocol(公式): https://modelcontextprotocol.io/docs/getting-started/intro(参照: 2024-08-01)
- LangChain(公式): https://langchain.com/(参照: 2025-06-01)
- LlamaIndex(公式): https://gpt-index.readthedocs.io/(参照: 2025-06-01)
- Qdrant(公式): https://qdrant.tech/(参照: 2025-06-01)
参照日は各ドキュメントの確認例です。導入前に必ず最新の公式ドキュメントとリリースノートを確認してください。
まとめ
- 参照系の応答やFAQ中心ならRAGが合理的で、根拠提示と検索品質が最重要です。
- 操作実行やトランザクションが絡む場合はMCPが安全に実行を仲介できます。
- 多くの実務ではRAGで情報を補強し、MCPを安全な実行層として組み合わせる併用が現実的です。
- PoCでは同一評価セットでAccuracy、Evidence Match、P95レイテンシ、コスト/クエリを測定し、運用時のセキュリティ要件を満たすことを合格基準にしてください。