简短版
RAG(检索增强生成)是一种在推理时给模型喂相关文本的技术,通常是去搜一个你事先嵌入好的向量数据库。它的存在是为了从模型没训练过的知识库里回答问题。
MCP(模型上下文协议)是一个在运行时把模型连到外部工具和数据源的标准。它的存在是为了让模型能做事:查实时数据库、调 API、读文件、发消息。
所以这个对比本身有点错位。RAG 检索知识,MCP 赋予能力。两者都可以单独用,很多真实系统两个都用——一个 MCP server 自己就可以去做 RAG 检索。
RAG 擅长什么
任务是「从这些文档里回答」时,RAG 最合适。你有一批语料——支持文章、内部 wiki、产品手册——想让模型基于这批特定材料而不是训练数据来作答。把语料嵌入一次、每次查询检索相关片段,这套做法高效且成熟。
它的边界也值得说清楚。RAG 给模型的是可读的文本,不是可执行的动作——它下不了单,也改不了记录。而且它工作在一份快照上:底层文档一变,索引就得重建,所以 RAG 不适合分钟级变化的数据。
MCP 擅长什么
任务需要实时数据或产生副作用时,MCP 最合适。「订单 4471 现在什么状态」没法从预建索引里回答——它需要此刻去查那个业务系统。「创建一个日历事件」是动作,不是检索。这些是 MCP 的地盘。
MCP 还顺带解决了新鲜度问题:因为 server 是在调用时去查源头,没有会过期的索引。代价是延迟和可靠性——每次工具调用都是一个可能慢、可能失败的实时请求,而向量检索是快速且本地的。
什么时候用哪个——以及两个都用
答案在一批稳定文档里、只需要模型读,用 RAG。答案需要查实时系统、或者模型需要执行动作而不只是回答,用 MCP。
任务横跨两者时,两个都用。一个客服 agent 可能先用 RAG 检索到相关政策,再通过 MCP server 查这个客户的真实账户状态——知识加能力在一条流程里。把它们当对手会导致选错工具;当互补看,通常更接近真实系统的需要。
一个实务提醒:因为 MCP server 就是个程序,没有什么能阻止它内部做检索。一个按需搜索你知识库的「docs」MCP server,就是套了 MCP 接口的 RAG——这往往是暴露一个同时也在变化的语料最干净的方式。