0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RAG / Function Calling / MCP の違いとは

0
Posted at

はじめに

近年、LLM(大規模言語モデル)に外部知識を活用させる手法が次々と登場しています。
調べていて「RAG」「MCP(Model Context Protocol)」「Function calling」といった手法がありますが、何が違うの?と疑問に思いました。
この記事では、これら3つの技術の違いを、仕組み・フロー・活用シーンの観点から整理して解説します。

1. RAG(Retrieval-Augmented Generation)

「回答を生成する前に、関連情報を探してくる」仕組み

RAGは、ユーザーの質問に対して、LLMに渡す「コンテキスト」を事前に検索して拡張する技術です。

仕組み

ユーザーのクエリに基づき、ベクトルデータベース等から関連文書を検索し、その内容をプロンプトに含めてLLMに渡します。

特徴

  • タイミング
    LLMを呼び出す前に検索が行われます。
  • データ
    大量の静的なドキュメント(社内Wiki、PDF、FAQなど)の扱いに長けています。
  • 主導権
    アプリケーション側が検索プロセスを制御します。

フロー

検索は LLM呼び出し前に行い、主導権はアプリ側にあります

2. Function Calling

「LLMの判断をもとに、アプリの機能を実行する」仕組み

Function Callingは、LLMが「この関数をこの引数で実行すべきだ」と判断し、その判断をもとにアプリケーションが処理を実行する形態です。

LLM自身が関数を実行するわけではなく、
どの処理を行うかの判断のみを担い、実行は常にアプリケーション側で行われます。

仕組み

LLMは関数のパラメータを生成します。
アプリケーションはその内容を受け取り、対応する関数を実行し、
その結果を再度LLMに渡して最終的な回答を生成します。

特徴

  • 役割分担
    LLMは「どの処理が必要か」を判断し、アプリケーションが実行を担います。
  • 実装
    関数定義や実行後の処理フローは、アプリケーションごとに個別実装が必要です。
  • 実行対象
    アプリケーション内部に用意された関数・APIを実行します。

フロー

LLMは処理内容を判断し、実行はアプリケーション側で行われます。


3. MCP(Model Context Protocol)

「LLMの判断に応じて、外部ツールを利用する」仕組み

MCPは、AIモデルと外部ソースを連携させるための共通プロトコルです。
LLMは回答生成の途中で「追加の情報や処理が必要だ」と判断し、その判断をもとにアプリケーションがMCPサーバー上のツールを利用します。

仕組み

MCPでは以下の要素が関与します。

  • ユーザー
  • アプリケーション(MCP Host)
  • LLM
  • MCPサーバー(ツール提供者)

LLMは推論の途中でツール利用の必要性を判断しますが、
実際にMCPサーバーへリクエストを送るのはアプリケーション側です。

特徴

  • 取得タイミング
    回答生成中に、LLMの判断に応じて必要な情報や処理結果を取得します。
  • 再利用性
    ツールの定義・実行方法が共通プロトコルで標準化されており、複数のアプリやLLMから再利用できます。
  • 実行対象
    アプリケーション外部にあるMCPサーバー上のツールを実行します。

フロー

LLMが「どのツールを使うべきか」を判断し、
その判断を受けてアプリケーションがMCPサーバー上のツールを実行します。


4. 比較まとめ

それぞれの違いを以下の表にまとめました。

比較項目 RAG Function Calling MCP
情報・処理の判断タイミング 生成前 生成中 生成中
判断主体 アプリケーション LLM LLM
実行主体 アプリケーション アプリケーション アプリケーション
主な対象 事前インデックス化した文書 アプリ内部の関数・API 外部ツール(MCPサーバー)
再利用性 データベース依存 低い(アプリ固有) 高い(共通プロトコル)
実行場所 アプリ内 アプリ内 アプリ外(MCPサーバー)

5. MCPで起きていることもFunction Calling的な動作

MCPでも結局は、LLMが「この関数(ツール)を使いたい」と判断して、その関数が実行されて結果がLLMに返る。これは Function Calling と同じ構造です。
最も重要な違いは、標準化されているかどうか。
MCPは、関数の定義・発見・実行をアプリの外に切り出し、複数のアプリやLLMから再利用できる形で標準化した点が決定的に異なります。

6. RAGとMCPは「両立」できる

これらは対立する技術ではなく、補完的な関係にあります。

  • MCPの中でRAGを実行する
    MCPサーバーがベクトルデータベースを検索し、その結果をLLMに返す構成も可能です。
  • 使い分け
    大規模な静的ドキュメント検索は「RAG」、最新のAPI連携や複雑な業務エージェントとしての動きは「MCP」といった使い分けが効果的です。

おわりに

RAGは「知識を渡す方法」、Function Callingは「処理を実行させる方法」、MCPは「それらをLLMから使うための標準化された基盤」 と言えるでしょう。
それぞれのプロトコルやフローの違いを理解することで、より高度で実用的なAIサービスを構築したいですね。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?