MCP + RAG:なぜ私は複雑なRAGシステムの構築をやめたのか
私は4年もの間、複雑なRAGシステムの構築に費やしてきました。
チャンク分割戦略、埋め込みモデル、ベクトルデータベース、そしてリランカー(reranker)を駆使しました。1,800時間分のナレッジベースのためのシステムを構築したのです。そのたびに、完璧に近づいていると考えていました。
しかし、うまく機能することはありませんでした。
そんな時、Model Context Protocol (MCP) のサポートを導入しました。それがすべてを変えました。MCPは、ほとんどの人にとって、従来の複雑なRAGを時代遅れなものにします。
かつて私は、次のような問題に頭を悩ませていました:
- セマンティック・チャンキングか再帰的チャンキングかの選択。
- OpenAI、Cohere、あるいはNomicの埋め込みモデルの選択。
- Pinecone、Weaviate、あるいはChromaの選択。
- top-k 検索とリランキングの管理。
私のRAGシステムはコードが2,000行に達しました。見た目は立派でしたが、失敗に終わりました。AI自体がすでに賢いのに、私はデータを賢くしようと躍起になっていたのです。
私はMCPアプローチに切り替えました。わずか150行のコードでサーバーを構築したのです。
AIには2つのツールだけを与えました:
search_notes: 単純なテキストマッチングを使用してノートを検索する。get_note_content: ノートの全文を返す。
チャンクも、複雑な埋め込みも、ベクトルデータベースもありません。
このシンプルなアプローチは、私の凝ったRAGシステムに対して10回中9回は勝利します。その理由は以下の通りです:
- AIがロジックを処理する。あらかじめ設定されたチャンカーよりも、AIの方が何が関連しているかを判断するのが得意です。
- 完全なコンテキスト。従来のRAGはノートを小さな断片に分割します。これにより、答えが失われることがよくあります。MCPを使えば、AIはノート全体を読み取ります。つまり、概念の全体像を把握できるのです。
- 予測可能性。テキスト検索はシンプルです。キーワードが存在すれば機能します。埋め込みのドリフト(embedding drift)や次元エラーを回避できます。
ただし、次のような場合は依然として従来のRAGを使用すべきです:
- 10万件を超える大規模なドキュメントがある場合。
- 低レイテンシで大規模な本番環境が必要な場合。
しかし、個人のナレッジベース、サイドプロジェクト、あるいは社内ツールであれば、それらは必要ありません。
MCPのメリット:
- 保守が容易:2,000行ではなく150行。
- 埋め込みコストがかからない:モデルが変わってもデータを再埋め込みする必要がありません。
- 精度が向上:AIが完全なコンテキストを取得できます。
- デバッグが容易:検索が失敗した理由を正確に特定できます。
オーバーエンジニアリングはやめましょう。大変な作業はAIに任せればいいのです。AIにデータへのアクセス権を与え、自由に読ませましょう。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi
