RAG vs MCP をシンプルに解説:ビジネスに必要なのはどちら?
2025年のAI関連で何か注目していれば、RAGとMCPというアクロニムが紙ふぶきのように飛び交うのを見かけたことがあるだろう。CTOが会議で一つを言及したかもしれない。ベンダーがもう一つをピッチしたかもしれない。どちらもが実際に何をするのか秘かに「全く分からない」と思いながらうなずいていたかもしれない。
あなた一人じゃない。正直に言うと、これらの用語を使っている多くの人も完全には理解していない。
ここ1年、クライアントプロジェクトにAI搭載機能を実装してきた。内部ナレッジベースから顧客向けチャットシステムまで、あらゆるものを構築した。本番環境でRAGとMCPの両方を実装した。RAGとMCPの選択は実は対立構図ではないと言える。異なる問題を解決する。しかし、AI戦略について賢い決定を下すにはその両方を理解する必要がある。
わかりやすい言葉で説明しよう。
目次
- 実際には何を解決しているのか?
- RAGを人に説明するように説明
- MCPを人に説明するように説明
- RAG対MCP:並列比較
- ビジネスがRAGを必要とする場合
- ビジネスがMCPを必要とする場合
- 両者を一緒に必要とする場合
- 実世界アーキテクチャの例
- 実装コストと複雑さ
- 過度な設計なしに始める方法
- FAQ
実際には何を解決しているのか?
GPT-4、Claude、GeminiのようなAIモデルの基本的な問題はここにある。これらは特定のカットオフ日までの公開インターネットデータで訓練されている。以下のことを知らない。
- あなたの会社の内部ドキュメント
- あなたの製品カタログと価格設定
- あなたの顧客サポート履歴
- あなたの独自プロセス
- 訓練データカットオフ後に起きたこと
だから、あなたの会社の誰かがAIアシスタントに「エンタープライズクライアント向けの返品ポリシーは何ですか?」と聞くと、モデルは何かを作り上げるか(幻覚)、それを知らないと言う。
RAGとMCPは両方ともこの「知識ギャップ」問題を解決するアプローチである。ただ、基本的に異なる方法で解決するだけだ。
RAGを人に説明するように説明
RAGはRetrieval-Augmented Generationの略である。 難しい言い方だから翻訳しよう。
エッセイを書いているが、記憶に頼る代わりに、本当に速い研究アシスタントがいるとしよう。各段落を書く前に、アシスタントが図書館に走って最も関連性の高いページを見つけ、あなたの机に置き、そしてあなたがそれらの参考文献を使って段落を書く。
これがRAGである。AIモデル(エッセイの筆者)は応答を生成する前にあなたのデータ(図書館)から取得された関連コンテキスト(図書館のページ)を取得する。
RAGはステップバイステップでどう機能するか
- あなたがデータを準備する。 ドキュメント、PDF、ナレッジベース記事など、何でもいい。それらはチャンクに分割され、エンベッディングと呼ばれる数値表現に変換される。
- これらのエンベッディングはベクトルデータベースに入る。 キーワード検索ではなく、意味を理解する特別な検索インデックスのようなものと考えよう。
- ユーザーが質問をする。 「エンタープライズクライアント向けの返品ポリシーは何ですか?」
- システムがベクトルデータベースを検索する。 質問と最も意味的に似ているチャンクを見つけ出す。
- それらのチャンクがAIのプロンプトに詰め込まれる。 基本的に「ここがドキュメントからのコンテキストです。この質問に答えてください」という具合である。
- AIがあなたの実際のデータに根拠づいた応答を生成する。
簡略化されたRAGパイプラインがコードでどのように見えるかを示す。
# 簡略化されたRAGフロー
from openai import OpenAI
from pinecone import Pinecone
client = OpenAI()
pc = Pinecone(api_key="your-key")
index = pc.Index("company-docs")
def answer_question(user_query: str) -> str:
# ステップ1:質問をエンベッディングに変換
embedding = client.embeddings.create(
input=user_query,
model="text-embedding-3-small"
).data[0].embedding
# ステップ2:関連ドキュメントチャンクを見つける
results = index.query(vector=embedding, top_k=5, include_metadata=True)
context_chunks = [match.metadata["text"] for match in results.matches]
# ステップ3:コンテキスト付きでLLMに送信
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "提供されたコンテキストに基づいて答えてください。コンテキストに答えが含まれていない場合はそう言ってください。"},
{"role": "user", "content": f"コンテキスト:\n{'\n'.join(context_chunks)}\n\n質問: {user_query}"}
]
)
return response.choices[0].message.content
RAGが得意なこと
- 既存ドキュメントに関する質問に答える
- 実際のデータに根拠づけることで幻覚を減らす
- 大規模なナレッジベース(数千のドキュメント)で動作する
- 実装と理解が相対的に簡単
RAGが苦手なこと
- データを取得して参照することはできるが、何かを実行することはできない
- 品質はドキュメントをどれほどよくチャンク化し埋め込むかに大きく依存する
- システム間の関係を理解しない
- API、データベース、またはツールからライブデータを引く事ができない
MCPを人に説明するように説明
MCPはModel Context Protocolの略である。 これは2024年後半にAnthropicがリリースし、2025年で大きな牽引力を得た。
RAGがドキュメントをフェッチする研究アシスタントをAIに与えるようなものなら、MCPはAIにツールのセットと使用許可を与えるようなものである。
考え方としてはこうだ。単にあなたの会社データについて読むのではなく、AIは実際にあなたのシステムと相互作用することができる。データベースをクエリできる。CRMを確認できる。顧客の注文ステータスを検索できる。サポートチケットを作成できる。リアルタイム分析を引く。
MCPは標準化されたプロトコル(AIツール用USB)である。MCPの前に、AIの統合は全てカスタムビルドだった。各ツール用の特定の関数呼び出しを書く。MCPは一般的な言語を作り出すことで、AIモデルがあらゆるMCP互換サーバーからツールを発見・使用できるようにする。
MCPはステップバイステップでどう機能するか
- MCPサーバーをセットアップする。 各サーバーは特定の機能を公開する。たぶん1つはデータベースに接続し、別のものはSlackに接続し、もう1つはCRMに接続する。
- AIクライアントがこれらのサーバーに接続する。 利用可能なツールを発見する。
- ユーザーが質問またはリクエストを行う。 「Acme Corpは昨四半期に何件の注文をしたか?」
- AIがどのツール(複数可)を使用するかを決定する。 CRMまたはデータベースツールを選ぶ。
- AIがMCPを通じてツールを呼び出す。 MCPサーバーに構造化されたリクエストを送信する。
- サーバーがリアルタイムデータを返す。 事前にインデックスされたドキュメントではなく、実際のライブデータである。
- AIが応答を総合する。 新鮮で正確な情報を使用する。
簡略化されたMCPサーバーの例を示す。
// 注文データを公開する単純なMCPサーバー
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "order-data",
version: "1.0.0"
});
server.tool(
"get_customer_orders",
"特定の顧客の注文履歴を取得",
{
customerName: z.string().describe("顧客会社名"),
dateRange: z.enum(["last_quarter", "last_year", "all_time"]).optional()
},
async ({ customerName, dateRange }) => {
// 実際には、これは実際のデータベースをクエリする
const orders = await db.query(
`SELECT * FROM orders WHERE customer_name = ? AND date >= ?`,
[customerName, getDateForRange(dateRange)]
);
return {
content: [{ type: "text", text: JSON.stringify(orders, null, 2) }]
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
MCPが得意なこと
- ライブなリアルタイムデータソースにAIを接続する
- AIにアクション(読むだけではなく)を取らせる
- 異なるAIプラットフォーム間の統合を標準化する
- 構造化データ(データベース、API、SaaSツール)で動作する
MCPが苦手なこと
- 大量の非構造化テキストを検索するのに向いていない
- 各統合用にMCPサーバーを構築して保守する必要がある
- セキュリティは慎重な検討が必要。AIに実システムへのアクセスを与えている
- 新しいため、エコシステムはまだ成熟中である
RAG対MCP:並列比較
| 機能 | RAG | MCP |
|---|---|---|
| 主要機能 | AIの応答を知らせるために関連ドキュメントを取得 | AIをツールとライブデータソースに接続 |
| データ型 | 非構造化テキスト(ドキュメント、PDF、記事) | 構造化データ(データベース、API、SaaSツール) |
| データの鮮度 | 最後のインデックス更新と同じくらい新しい | リアルタイム、ライブデータ |
| アクションを取れるか? | いいえ。読み取り専用 | はい。作成、更新、削除できる |
| セットアップの複雑さ | 適度(エンベッディング、ベクトルDB、チャンク化) | 適度から高い(統合ごとにMCPサーバーを構築) |
| 最良の類似例 | 関連論文を見つける研究アシスタント | 接続ツールのスイスアーミーナイフ |
| 成熟度 | 確立された(2年以上の本番利用) | 新しいが急速に採用中(2024年後半から) |
| 幻覚リスク | ドキュメントベースの質問では低い | 構造化データクエリでは低い |
| 典型的なコスト | ベクトルDBホスティング + エンベッディングAPIコール | MCPサーバーホスティング + API/DBアクセスコスト |
| 標準化 | 単一の標準なし(多くのアプローチ) | Anthropicによるオープンプロトコル |
ビジネスがRAGを必要とする場合
RAGがあなたの答えになるのは、核となる問題が以下の場合だ。「大量のドキュメントがあり、AIがそれらについて質問に答える必要がある。」
具体的なシナリオ:
- 内部ナレッジベース検索。 あなたの会社は数百のSOP、ポリシードキュメント、トレーニング資料を持っている。従業員は素早く答えを見つける必要がある。
- カスタマーサポート。 ヘルプドキュメント、FAQ、製品ドキュメントに基づいて質問に答えることができるAIチャットボットが必要。
- 法的またはコンプライアンス。 あなたのチームは大量の規制テキスト、契約書、または判例法をクエリする必要がある。
- コンテンツが豊富なウェブサイト。 あなたの公開されたコンテンツから引き出された知的な答えを訪問者が得ることを望む。
Next.jsアプリケーションをあなたのドキュメントを参照するカスタマー向けAI機能で構築している場合、おそらくRAGから始める。
2025年のRAG実装スタック
今私が見てるし、構築している最も一般的な本番RAGスタック:
- エンベッディングモデル: OpenAI
text-embedding-3-smallまたはCohere Embed v3 - ベクトルデータベース: Pinecone、Weaviate、またはpgvector(すでにPostgreSQLを使用している場合)
- チャンク化戦略: オーバーラップありの再帰的文字分割、またはセマンティックチャンク化
- LLM: GPT-4o、Claude 3.5 Sonnet、またはGemini 1.5 Pro
- フレームワーク: LangChain、LlamaIndex、またはVercel AI SDK
pgvectorは特別な言及の価値がある。アプリケーションがすでにPostgreSQLで実行されている場合、ベクトル検索を追加できるが、完全に新しいデータベースを導入する必要はない。インフラストラクチャの複雑さを減らす上で大きな取り組みである。
ビジネスがMCPを必要とする場合
MCPがあなたの答えになるのは、核となる問題が以下の場合だ。「AIがビジネスシステムと相互作用し、ライブデータで動作する必要がある。」
具体的なシナリオ:
- 内部操作アシスタント。 「SalesforceでAcme Corpの契約ステータスを確認してから、Zendeskでオープンサポートチケットを検索して。」
- オンデマンド分析。 「データベースから先月の製品ラインごとの収益を引き出してトレンドをまとめて。」
- ワークフロー自動化。 「高優先度のバグが報告されたら、Jiraチケットを作成し、Slackでオンコール技術者に通知してください。」
- マルチシステムクエリ。 「倉庫システムの在庫レベルと、ERP内の保留中注文を比較してください。」
MCPは、AIが複数のシステムにアクセスし、ライブデータを引き、潜在的にアクションを取る必要がある場合に輝く。
2025年のMCPエコシステム
MCPエコシステムは爆発的に成長している。2025年半ばの時点で:
- 主要な採用者: Anthropic Claude Desktop、Cursor、Windsurf、Zed、Sourcegraph、そして多くの他者
- 事前構築サーバー: GitHub、Slack、PostgreSQL、Google Drive、Notion、Brave Search、Puppeteer、その他多数用の公式MCPサーバーが存在する
- コミュニティサーバー: GitHubに数百のコミュニティが管理するMCPサーバーがある
- SDK: TypeScriptとPython SDKは本番環境対応
modelcontextprotocol.ioで公式リストを参照し、増え続けるサーバーのレジストリを見つけることができる。
両者を一緒に必要とする場合
「RAG対MCP」の議論で人々が見落とすこと:それらは競合ではなく、相補的である。
私が構築した最も強力なAIアプリケーションは両方を使用する。ここに実例がある:
クライアントが営業チーム向けの内部AIアシスタントが必要だった。アシスタントは以下が必要だった:
- 製品機能と価格に関する質問に答える(数百の製品ドキュメント)→ RAG
- HubSpotで特定の見込み客の関与履歴を検索する → MCP
- ERPで現在の在庫可用性を確認する → MCP
- 会社の競争力のあるポジショニングドキュメントを参照する → RAG
- 提案メールのドラフトを作成してGmailのドラフトとして保存する → MCP
どのように対立ではないかを見よう?非構造化知識はRAGが必要。ライブシステムの相互作用はMCPが必要。AIオーケストレーターはリクエストの各部分用にどのツールを使用するかを理解できる。
実世界アーキテクチャの例
アーキテクチャ1:RAG専用(ナレッジベースチャットボット)
ユーザー質問 → エンベッディングAPI → ベクトルDB検索 →
取得されたチャンク + 質問 → LLM → 答え
最適な用途:ドキュメントサイト、サポートチャットボット、FAQシステム。
Astroでフロントエンドを構築した複数のものを構築してきた。Astroは静的コンテンツを良好に処理するため自然な適合であり、インタラクティブなアイランドとしてAIチャットコンポーネントを追加できる。
アーキテクチャ2:MCP専用(操作アシスタント)
ユーザーリクエスト → AIエージェント → MCPクライアント →
[MCPサーバー:CRM] [MCPサーバー:データベース] [MCPサーバー:Slack]
→ ツール結果 → AIエージェント → 応答/アクション
最適な用途:内部ツール、操作ダッシュボード、管理者アシスタント。
アーキテクチャ3:RAG + MCP(フルAIアシスタント)
ユーザーリクエスト → AIエージェント(ルーター)→
├── RAGパイプライン → ベクトルDB → 取得されたコンテキスト
├── MCPサーバー:CRM → 顧客データ
├── MCPサーバー:データベース → 分析
└── MCPサーバー:メール → ドラフトアクション
→ AIエージェントは全ての入力を総合する → 応答/アクション
最適な用途:エンタープライズアシスタント、営業ツール、複雑なワークフロー。
この3番目のアーキテクチャは物事が本当に面白くなるところで、経験豊富な開発者が重要な場所である。ルーティングロジック(RAGを使う時とMCPツールを呼び出す時を決定する)は魔法(とバグ)が生きているところである。この種の構築を探索しているなら、それを以前に行ったチームと話す価値がある。
実装コストと複雑さ
実際の数字について話しましょう。これらはおおよその数字で、2025年に見た、構築したプロジェクトに基づいている。
| コンポーネント | 月額コスト範囲 | 注釈 |
|---|---|---|
| OpenAIエンベッディング(text-embedding-3-small) | $2-50/月 | ドキュメント量に依存;100万トークンあたり$0.02 |
| Pinecone(スターター) | $0(無料層)から$70/月 | 無料層は多くの小〜中企業のユースケースをカバー |
| 既存PostgreSQL上のpgvector | $0追加 | すでにPostgresを実行している場合 |
| OpenAI GPT-4o API | $50-500/月 | 使用状況に基づいて非常に可変 |
| Claude API(Sonnet 3.5) | $30-300/月 | 競争力のある価格設定、強力なパフォーマンス |
| MCPサーバーホスティング | $10-100/月 | 通常、軽量Node.js/Pythonプロセス |
| 合計RAG専用セットアップ | $50-500/月 | 開発時間を追加で |
| 合計MCP専用セットアップ | $50-400/月 | 開発時間を追加で |
| 合計RAG + MCPセットアップ | $100-800/月 | 開発時間を追加で |
開発コストはより大きな変数である。堅実なRAG実装には2〜4週間のエンジニアリング時間がかかる。MCPサーバーはさまざま。単純なデータベースコネクターは1日かかるかもしれないが、複雑なマルチシステム統合は数週間かかるかもしれない。私たちと協力する場合、価格ページを確認してこれがどう見えるかを理解する。
過度な設計なしに始める方法
ここは、これらのシステムを12個構築した後の正直なアドバイスである。
小さく始める
初日に超大型システムのアーキテクチャ3を構築しようとしてはいけない。1つの高価値ユースケースを選ぶ。
ユースケースが知識集約的な場合、RAGで始める:
- 最も重要な50個のドキュメントを選ぶ
- Pineconeのような管理されたサービスまたはpgvectorを使用する
- 単純な取得パイプラインを構築する
- あなたのチームが実際に聞く実際の質問でテストする
- チャンク化戦略とプロンプトについて反復する
ユースケースがアクション集約的な場合、MCPで始める:
- AIがアクセスする必要がある2〜3個のシステムを特定する
- それらのシステム用にMCPサーバーを構築する
- 読み取り専用アクセスから開始する(信頼するまで書き込みなし)
- 実際のシナリオでテストする
- 人間がループの承認を必要とする書き込み機能を段々と追加する
最も重要なこと
応答の実際の品質を測定する。ラボではなく。実際のユーザーが実際の質問をしている。「このデモはかっこいい」と「これは実際にチームを助ける」の間のギャップは、ほとんどのAIプロジェクトが死ぬところである。
その会社になってはいけない。
Next.js、Astro、またはヘッドレスCMSバックエンドで構築している場合、これらのAI機能を段々と統合できる。アプリケーション全体を再構築する必要はない。
FAQ
RAGを簡単な言葉で何か?
RAG(Retrieval-Augmented Generation)は、AIモデルが質問に答える前にあなたのドキュメントから関連情報を検索する技術である。訓練中に学習したことだけに頼るのではなく、あなた自身のデータから特定の関連コンテキストが与えられる。AIにクローズドブック試験ではなくオープンブック試験を与えるようなものと考えよう。
MCPを簡単な言葉で何か?
MCP(Model Context Protocol)はAnthropicが作成した標準的な方法で、AIモデルを外部ツールとデータソースに接続する。これは、AIアシスタントがあなたのデータベース、API、CRM、メール、その他のビジネスシステムと相互作用できるようにするユニバーサルアダプターのように機能する。単にドキュメントを読むのではなく、AIは実際にライブシステムをクエリし、アクションを取ることができる。
RAGとMCPを一緒に使用できるか?
絶対、そして多くのビジネスアプリケーションのために、両方を使用することが理想的なアプローチである。RAGは「ドキュメント内の情報を見つける」部分を処理し、MCPは「ライブシステムと相互作用する」部分を処理する。ナレッジベースを参照でき、かつCRMからリアルタイムデータを引くことができるAIアシスタントは、一方しかできないものより大幅に有用である。
MCPが存在しているため、RAGは廃止されたか?
いいえ。異なる問題を解決する。MCPは構造化データとシステム相互作用に優れているが、ドキュメント、ポリシー、記事のような大量の非構造化テキストを検索することには設計されていない。RAGはそのユースケースのために最良のアプローチのままである。MCPがRAGを置き換えると言う誰かはRAGが何をするかを理解していない。
ビジネスのためにRAGを実装するのにはいくらかかるのか?
RAGシステムのインフラストラクチャコストは通常、ドキュメントボリュームとクエリ頻度に応じて月額$50〜500。より大きなコスト開発であり、本番品質の実装のためには2〜4週間のエンジニアリング時間を期待する。Pineconeのような多くのベクトルデータベースは、コンセプト検証を開始して検証するのに十分な無料層を提供する。
RAGまたはMCPを実装するための技術チームが必要か?
はい。概念は単純であるが、本番実装は堅実なエンジニアリングを必要とする。埋め込みパイプラインの処理、適切なチャンク化戦略の選択、ベクトルデータベースの管理、エラーケースの処理、セキュリティの実装、パフォーマンスの最適化が必要である。これらはプラグアンドプレイソリューションではない。これらはアプリケーション全体に影響を与える建築上の決定である。
MCPの使用のセキュリティリスクは何か?
MCPはAIモデルに実ビジネスシステムへのアクセスを与えるため、セキュリティは重要である。主なリスクは以下である:過度に広範な権限(AIが見てはいけないデータへのアクセスを与える)、MCPサーバーでの認証の欠如、人間の承認なしで読み取られるアクションの許可。ベストプラクティスは読み取り専用アクセスから開始し、適切な認証を実装し、すべてのツール呼び出しをログし、データを変更するアクションについて人間の確認を要求する。
ビジネスがAI統合とRAGまたはMCPのために準備ができているかどうかは、何を知ればいいか?
あなたがこれらに「はい」で答えることができれば準備ができている:AIが助けることができる特定の、繰り返される質問またはタスクはあるか?それを支援するために必要なデータまたはシステムアクセスはあるか?エンジニアリング能力(構築・管理)を持つまたは雇用できるか?そして批判的に。反復してくれるか?最初のバージョンは完璧ではないだろう。AIで成功するビジネスは、v1を素早くリリース、実際の使用を測定し、実際のフィードバックに基づいて改善するものである。