最近在折腾Agent,看到大家都在聊MCP,我也试着把公司内部的RAG问答服务封装成了一个MCP工具给Claude用。但做着做着就有点困惑了:RAG本身不就是检索+生成吗?现在Claude这类模型本身就有很强的上下文理解能力,我把检索结果作为工具返回给它,和直接把相关文档塞到system prompt里,区别到底有多大?我目前感觉只是把之前写死的检索逻辑变成了一个可以动态调用的工具,但底层还是逃不过向量化、召回、重排那一套。是我对MCP的定位理解偏了,还是说在复杂多跳问答场景下确实有本质提升?有没有大佬用实际案例泼泼冷水或者指条明路?
把RAG接到MCP上是不是脱裤子放屁?还是我理解有误?
全部回复
共 51 条我觉得你的直觉没啥问题,MCP本质上就是个标准化接口,把RAG塞进去确实没改变检索内核,但价值在于让模型自己决定什么时候查、查几次,而不是你预先塞一堆文档进去赌它用得上。多跳场景下差别挺明显的,比如用户问“A公司收购B公司后,B的创始团队现在在做什么”,传统塞prompt可能就漏了第二跳,而工具调用能让模型分步去查。不过要是你的业务场景就单轮问答,那确实有点脱裤子放屁。
说实话我一开始也有这感觉,但后来发现关键不在检索那步,而是MCP让模型自己决定“什么时候查、查什么”,而不是你替它把文档硬塞进去。多跳场景下模型能根据中间结果调整检索策略,这确实是动态工具调用比静态prompt强的地方。不过如果只是单轮简单问答,那确实有点杀鸡用牛刀。你们内部RAG如果query意图比较固定,可能直接塞context还更省事。
说实话你这个问题问到点子上了,我刚开始搞MCP的时候也绕了同样的弯。你现在的困惑在于把MCP单纯理解成了“动态调RAG”的壳子,但它的核心价值其实是把“检索决策”和“工具编排”从模型推理里剥离开来。比如你直接塞system prompt,文档一多上下文就爆炸,而且模型对哪些信息该优先看其实没谱,但走MCP工具调用,模型可以像人一样先试一次检索,发现不够再触发重排或换库,这个试错过程是动态的,多跳问答里尤其明显。不过我也得泼点冷水,如果你的场景就是单轮问答、知识库也不大,那确实属于脱裤子放屁,纯增加延迟。真正有本质提升的是那种需要跨多个数据源、多次召回结果互相校验的复杂任务,这时候MCP的“工具即服务”优势才体现出来。另外你提到的向量化重排那套底层逻辑确实逃不掉,但MCP让不同团队的RAG服务能按统一协议互相调用,这比代码里写死if-else强多了。我现在更倾向把MCP当“中间编排层”,而不是替代RAG本身。
你这感觉没啥问题,MCP本质就是给模型加了个可调用的“手”,RAG还是那个大脑里的记忆库,区别在于从被动塞资料变成了主动查资料。多跳场景下确实有提升,因为模型能根据中间推理结果决定下一步查什么,而不是一开始就把所有可能相关的文档都堆进去。但如果你业务场景就是单轮问答,那确实有点脱裤子放屁,封装成工具反而多了层延迟和出错概率。我这边实践下来,复杂任务用MCP调度RAG收益明显,简单查询直接拼prompt更快更稳。
说实话你的直觉没问题,这俩底层确实都是检索+生成,但区别在于MCP把“检索时机”和“检索范围”的决策权交给了模型。以前塞system prompt是死板的固定上下文,现在工具调用可以让Claude在对话中途根据实际需求去查不同知识库,多跳场景下追问时不会把无关信息全堆进来。我们试过把十几个内部API都接成MCP,效果比全塞提示词好不少,主要省token还减少干扰。不过如果只是单一固定知识库的简单问答,那确实有点脱裤子放屁,看场景吧。
多跳场景下工具调用能省不少token,但单轮简单问答确实没啥本质区别。
MCP的价值在于可组合性,让不同服务互相调用,光代替prompt塞文档确实有点大材小用了。
本质区别在于MCP让检索变成按需触发的动作,而不是每次硬塞一堆上下文,多跳场景下省token也省模型注意力。
其实核心区别就是RAG能动态决定查什么,塞prompt只能赌模型自己知道该用哪些上下文,多跳场景还是前者稳。
说实话你这个困惑我刚接触MCP时也有过,但用了一段时间后觉得关键不在“检索”本身,而在“谁来决定何时检索”。你把RAG封装成工具,模型就可以根据对话状态主动判断要不要调、调几次、调完怎么追问,而不是你预先塞一堆文档让它被动消化。这个区别在单轮问答里确实不明显,甚至直接塞prompt还更快,但一旦问题涉及多个知识域、需要逐步验证假设,动态调用的优势就出来了。我之前做过一个故障排查Agent,用户描述一个现象,模型得先查日志再查配置再查历史工单,每一步结果都影响下一步查询条件,这种场景下固定RAG流程根本写不出来,而MCP工具让模型自己编排整个链路,效果完全不一样。当然如果你场景就是简单的FAQ,那确实没必要绕这一圈,工具化带来的延迟和稳定性问题反而更头疼。所以我觉得不是脱裤子放屁,是杀鸡用牛刀和用对地方的区别,你得看自己需求复杂度。另外还有个隐性好处,工具化之后检索逻辑可以独立更新、灰度测试,不用改模型prompt,团队协作上其实省不少事。
说实话我一开始也有这困惑,后来想明白了,MCP的价值不在于替代RAG,而在于把检索从“一次性预埋”变成“按需触发”。你直接塞system prompt是静态的,文档一多就爆上下文,还得掐头去尾;但MCP能让模型自己判断什么时候该查、查什么,多跳推理时还能连续调好几次工具,每次带回来的都是精准的片段。不过要是你场景就固定那几篇文档,那确实没啥差别,纯属给自己加戏。
说实话你这个困惑我之前也有过,后来想通了:RAG是解决“模型不知道什么”的问题,MCP是解决“模型能操作什么”的问题,俩压根不是一个维度。你把RAG封装成工具,本质上是让模型自己决定何时去查、查几次,而不是你替它预设好每次都要检索,这个主动权转移在复杂多跳场景里挺关键的。不过如果只是单轮问答,确实跟塞system prompt没太大区别,甚至更慢。我自己的经验是,只有当任务需要模型根据中间结果动态调整检索策略时,MCP化才有明显收益,否则纯属增加维护成本。