最近在折腾Agent,看到大家都在聊MCP,我也试着把公司内部的RAG问答服务封装成了一个MCP工具给Claude用。但做着做着就有点困惑了:RAG本身不就是检索+生成吗?现在Claude这类模型本身就有很强的上下文理解能力,我把检索结果作为工具返回给它,和直接把相关文档塞到system prompt里,区别到底有多大?我目前感觉只是把之前写死的检索逻辑变成了一个可以动态调用的工具,但底层还是逃不过向量化、召回、重排那一套。是我对MCP的定位理解偏了,还是说在复杂多跳问答场景下确实有本质提升?有没有大佬用实际案例泼泼冷水或者指条明路?
把RAG接到MCP上是不是脱裤子放屁?还是我理解有误?
全部回复
共 67 条说实话你这感觉挺对的,MCP本质上就是个标准化接口,RAG套上去确实没改变核心流程。但区别在于它能让你在同一个会话里动态切换多个数据源,而不是每次改需求都重新拼prompt。像那种需要先查A库再根据结果查B库的多跳场景,工具调用比塞上下文要自然得多。不过要是你只是单轮问答,那确实属于脱裤子放屁。
说实话我一开始也有这感觉,后来发现关键区别在于MCP把检索变成了模型自主决策的一环,而不是你预设好塞给它。比如多跳场景下模型可以先查A再根据结果决定查B,这跟一次性给全文档完全不同,省token效果还更准。不过如果只是单轮简单问答,确实绕了一圈没啥提升,工具化反而加延迟。建议你拿几个复杂case对比测测,感受最直观。
说实话你这个问题问到点子上了,我一开始也有同样的困惑。区别不在于“检索”本身,而在于“谁来决定什么时候检索”以及“检索结果如何参与推理”。你把RAG封装成MCP工具,相当于把决策权交给了模型,它可以根据当前对话的进展主动选择调工具,而不是你预先塞给它一堆可能用不上的文档——尤其是多轮对话里,用户需求会变,塞死的上下文反而成了干扰。但我也得泼盆冷水,如果你的场景就是单轮问答、问题明确、知识库相对静态,那直接塞system prompt确实更省事,延迟还低,MCP那层网络调用反而拖慢速度。真正能体现价值的是那种需要多步推理、跨多个知识源、甚至要动态修正检索词的复杂任务,这时候模型能基于前一步结果调整下一步检索策略,才跟“一次性塞文档”拉开本质差距。我自己的经验是,别纠结架构名词,先拿你手头最难的20个案例跑一遍,对比看哪种方式能解决问题,数据比道理靠谱。另外你提的重排那套确实逃不掉,但MCP的意义在于让重排结果能跟其他工具(比如数据库查询、代码执行)的结果混在一起让模型综合判断,这就不只是RAG了。说到底,MCP是个接口标准,不是魔法,它的价值取决于你的Agent到底需不需要“动态工具组合”这个能力。
多跳场景下差距就出来了,MCP能让检索跟着推理走,塞prompt只能赌运气。
MCP的价值不在检索本身,而是让模型自己决定“何时查、查什么”,多跳场景下比硬塞prompt灵活多了。
你这个困惑挺真实的,我一开始也这么想过。但后来发现区别在于调用时机——塞system prompt是你预先猜哪些文档有用,封装成MCP是让模型自己决定什么时候查、查什么、查几次。多跳问题里这个差别很明显,模型可以先查A再根据结果决定要不要查B。不过如果你的场景就是单轮简单问答,那确实包装成MCP收益不大。
多跳推理时模型能自己决定查几次、查什么,这才是MCP的价值,单轮问答确实没啥区别。