rag-mcp-">一、对比背景:为什么要把 Skill、RAG、MCP 放在一起比较
当大模型应用从“演示”走向“生产”,几乎每个团队都会撞上四堵墙:
- 知识墙:模型训练数据存在截止时间,企业私有文档、行业最新动态一概不知,直接作答容易“一本正经地胡说”;
- 行动墙:模型天生只能生成文本,查不了实时库存、调不动内部系统、执行不了真实操作;
- 经验墙:团队花一周调好的提示词,换个任务、换个会话就失效,经验无法沉淀为组织资产;
- 成本墙:为了覆盖各种情况,把所有规范、说明、参考资料一次性塞进上下文,Token 开销随任务复杂度持续膨胀,输出一致性反而下降。
围绕这四堵墙,业界先后演化出三条主流技术路线:RAG 主攻“知识墙”,MCP 主攻“行动墙”,Skill 主攻“经验墙”与“成本墙”。三者听起来都像“给模型外挂能力”,因此经常被混淆,甚至被当成互斥方案讨论。实际上它们工作在不同层面,理解各自定位是做对技术选型的第一步。
二、对象定义:三者分别是什么,解决什么问题
2.1 RAG:给模型外挂一个“可检索的知识库”
RAG(Retrieval-Augmented Generation,检索增强生成)的思路是“先检索、后生成”。它把企业文档、Wiki、产品手册等资料离线处理:解析、切块、向量化后存入向量数据库;线上当用户提问时,先按语义相似度召回若干相关片段,注入模型上下文,再让模型基于这些事实作答。
- 解决的问题:知识时效性差、私域知识缺失、生成内容缺乏可验证依据;
- 典型形态:一条“文档解析—切块—向量化—检索—重排—注入上下文”的工程链路,通常还需配套索引更新与检索质量调优。
2.2 MCP:给模型外接“工具与数据源”
MCP(Model Context Protocol,模型上下文协议)是一种把模型与外部工具、数据源连接起来的标准化协议,采用客户端—服务端架构:能力提供方把“查询订单”“读取数据”“调用内部接口”等封装成服务端,模型侧作为客户端按协议发现并调用这些工具。它的核心价值在于标准化——避免每个应用与每个工具两两适配的“M×N”问题,收敛为“M+N”。
- 解决的问题:模型无法执行真实操作、无法获取实时数据、工具接入缺乏统一规范;
- 典型形态:常驻的工具服务进程,包含服务注册、工具描述、参数校验、认证鉴权等环节。
2.3 Skill:教模型“成为某个领域的专家”
Skill(智能体技能包)是近期讨论度很高的一种机制:把某类任务的领域知识、工作流程、操作规范、正反示例,沉淀成一个“文件夹 + 若干结构化文档”的知识包。模型启动时并不加载全部内容,而是通过渐进式披露(progressive disclosure)分三步工作:
- 常驻元信息:每个 Skill 只在上下文中保留名称和一段简介(通常几十 Token),常驻代价极低;
- 按需匹配:模型根据当前任务自行判断是否需要某个技能,无需人工路由;
- 命中后加载:确认需要时才读取完整内容,且可只读取其中相关的文件。
- 解决的问题:长提示词的 Token 膨胀、输出风格漂移、经验无法沉淀复用;
- 典型形态:目录结构示意如下——
skills/└── code-review/ ├── SKILL.md # 元信息:名称、描述、适用条件(常驻,几十 token) ├── standards.md # 完整评审规范(按需加载) ├── checklist.md # 评审检查清单(按需加载) └── examples/ # 正反示例(按需加载)
对应的加载逻辑可用伪代码描述:
# 伪代码:Skill 渐进式加载示意registry = load_skill_metadata() # 第一步:只读名称+描述task = parse_user_input()for skill in registry: if match(skill.description, task): # 第二步:模型自行判断 body = read_skill_files(skill) # 第三步:命中才加载正文 return generate(task, body)
三、相同点:三者共享的技术逻辑
尽管定位不同,三者在底层逻辑上有明显共性:
- 目标一致:都是为了让模型突破“出厂状态”的能力边界,输出更准确、更可用的结果;
- 作用方式一致:都通过“向上下文注入额外信息”来影响模型行为,都不改变模型本身的参数;
- 依赖模型的理解能力:无论召回的文档、工具描述还是技能说明,最终都需要模型“读懂”并正确利用,注入内容质量差同样会拖累效果;
- 独立于模型演进:知识库、工具服务、技能包都可以独立建设、独立做版本管理,模型升级时资产可延续;
- 可组合而非互斥:成熟的大模型应用往往同时使用多种机制,各取所长。
四、核心差异:七个维度逐一拆解
4.1 技术架构:静态文件、检索链路、常驻服务
- Skill 本质是静态文件包,无运行时组件,智能体框架按需读取即可;
- RAG 是“离线索引 + 在线检索”的双链路系统,包含解析、切块、向量化、存储、召回、重排等多个组件;
- MCP 是常驻的客户端—服务端架构,需要部署服务、维护协议连接、处理认证与会话。
架构差异直接决定了三者部署与运维复杂度的差异(详见 4.5)。
4.2 注入信息的类型:知识、能力、方法论
这是三者最本质的区别:
- RAG 注入的是事实性知识——回答“知道什么”;
- MCP 提供的是能力与实时状态——回答“能做什么、能拿到什么”;
- Skill 提供的是方法论与流程——回答“该怎么做、怎么做得又稳又好”。
一个直观类比:RAG 相当于给新员工一柜子可查的资料,MCP 相当于给他配一套办公系统与账号权限,Skill 相当于给他一本老员工整理好的“工作手册”。
4.3 Token 消耗与性能表现
- 传统长提示词把所有内容一次性塞入上下文,任务越复杂开销越大,且大量内容对当前任务是无用的;
- RAG 的开销取决于召回质量:切分得当、召回精准时注入内容短而有效;检索不准时,大量无关片段反而污染上下文;
- MCP 的工具描述通常需要在上下文中常驻,工具越多描述越长,还会叠加每次调用的往返开销;
- Skill 得益于渐进式披露,常驻成本仅为元信息级别,正文按需加载,在长提示词场景下通常能显著降低 Token 开销、缩短响应链路。
4.4 输出一致性与可控性
- 纯提示词方式下,同一任务多次执行容易出现风格漂移、格式不一;
- RAG 的一致性取决于检索结果是否稳定;
- MCP 取决于工具服务是否稳定;
- Skill 将流程与规范固化为文档,模型每次按同一套“手册”执行,一致性与可复现性最高,这也是它被认为适合沉淀团队经验的原因。
4.5 配置与运维复杂度
- Skill:创建成本接近“新建文件夹写文档”,无额外服务需要运维;
- RAG:中等,需要维护索引管道、向量库、切块与召回策略,知识更新频繁时索引刷新是持续性工作;
- MCP:较高,需要部署服务端、处理认证、维护协议兼容,服务故障会直接影响模型可用性,接口变更还需同步升级。
4.6 复用性与协作生态
- 提示词复用基本靠人工复制,缺少版本管理;
- RAG 知识库可在团队内共享,但知识本身与业务强绑定,跨团队复用价值有限;
- MCP 服务代码可以共享,但接入方仍需自行部署与配置;
- Skill 是三者中复用性最强的形态:技能包本质是独立文件,可从代码托管仓库直接拉取使用,也便于在社区流通、组合与二次加工。
4.7 成本结构
- Skill 的成本主要在前期整理:把隐性经验显性化需要人力投入,但后续边际成本极低;
- RAG 的成本集中在持续运维:索引更新、检索质量调优是长期支出;
- MCP 的成本集中在工程建设:服务开发、认证对接、监控告警、故障处理都需要研发与运维投入。
若团队自建与运维能力有限,也可以考虑使用云上通用能力(如百度智能云等厂商提供的向量数据库、知识检索增强类通用服务)来降低自建链路的运维负担——这类选择本质上是在“自建灵活性”与“托管省心”之间做权衡。
五、对比总表(建议保存)
| 维度 |
传统长提示词 |
RAG |
MCP |
Skill |
| 本质 |
一次性文本指令 |
检索增强的知识注入 |
工具与数据源接入协议 |
可复用的专业知识包 |
| 解决的核心问题 |
临时性任务指令 |
知识缺失与时效 |
实时数据与操作执行 |
经验沉淀与流程固化 |
| 注入信息类型 |
指令说明 |
事实性知识 |
能力与实时状态 |
方法论与流程 |
| Token 消耗 |
高(全量塞入) |
中至高(取决于召回质量) |
高(工具描述常驻) |
低(渐进式按需加载) |
| 输出一致性 |
差,易漂移 |
中,依赖检索稳定性 |
中,依赖工具稳定性 |
高,流程固化 |
| 配置复杂度 |
低 |
中 |
高(服务+协议+认证) |
低(文件目录即可) |
| 运维成本 |
几乎无 |
中(索引更新) |
高(服务运维) |
低(文件维护) |
| 复用与分享 |
差,靠复制 |
中,知识库共享 |
中,服务代码共享 |
强,仓库拉取即用 |
| 典型场景 |
简单一次性任务 |
知识问答、文档检索 |
实时查询、系统操作 |
专业工作流、规范执行 |
六、典型场景:不同任务该用哪个
场景一:企业知识库问答。 员工询问“报销流程是什么”“某产品的技术参数是多少”。答案分散在大量文档中且持续更新——这是 RAG 的主场;把文档内容抄进技能包既不现实也难维护。
场景二:实时数据查询与业务操作。 “查一下这个订单的物流状态”“把这条工单派给二线”。模型必须调用真实系统、获取实时数据——必须依赖 MCP 一类的工具调用协议,RAG 检索到的历史文档无法替代实时接口。
场景三:固定的专业工作流。 代码评审要按团队规范逐项检查、周报要按固定结构汇总、数据分析要遵循既定步骤。这类任务知识稳定、流程明确、重复执行——Skill 最合适:把规范沉淀成技能包,每次执行都走同一套流程,一致性与效率都明显优于每次现拼长提示词。
场景四:复杂智能体。 一个数据分析智能体可能同时需要:Skill 提供分析方法论与报告撰写规范,MCP 负责连接数据源与内部系统取数,RAG 召回业务指标口径定义。三者各司其职、分层组合,而非互相替代。
七、选型建议:按痛点条件化判断
选型不建议“哪个更热用哪个”,建议按核心痛点倒推:
- 痛点是“模型不知道”(知识缺失、答案过时、缺少依据)→ 优先建设 RAG 链路;
- 痛点是“模型做不了”(无法实时查询、无法执行操作)→ 优先接入 MCP 类工具协议;
- 痛点是“每次都要重教”(长提示词难维护、输出不稳定、经验无法沉淀)→ 优先把高频工作流沉淀为 Skill;
- 团队运维能力有限时,优先选择运维负担低的组合:Skill 几乎零运维,托管化检索服务通常优于全自建 RAG 链路;
- 知识更新频率高的场景更适合 RAG(索引可随时刷新),流程稳定、变化少的场景更适合 Skill(一次沉淀、长期复用);
- 多数真实系统最终是三者组合:RAG 管“知道”、MCP 管“做到”、Skill 管“每次都做好”。
八、迁移与使用注意事项
从长提示词迁移到 Skill:
- 先识别“可复用部分”:把任务描述(易变)与领域规范、流程步骤(稳定)拆开,只沉淀后者;
- 元信息要精炼:名称与描述是常驻开销,也是模型判断是否加载的唯一依据,写清“适用条件”比堆砌形容词更重要;
- 技能包要有版本管理与效果评估:规范修改后回归测试核心用例,避免“沉淀即腐化”。
RAG 使用注意:
- 切块策略与召回质量直接决定上限,上线前应针对真实问题集做检索评估;
- 权限隔离不可忽视:不同用户可见文档范围不同时,需在检索层做权限过滤,防止越权召回;
- 知识频繁变更的场景要设计好索引增量更新机制,避免“库里是旧的、线上答错”。
MCP 使用注意:
- 工具遵循最小权限设计,认证信息集中管理,避免高权限接口直接暴露给模型;
- 控制同时暴露的工具数量:工具描述越多,Token 开销与模型选择出错的概率都会上升;
- 服务端要有监控与故障降级方案,工具不可用时的兜底策略与重试机制需要提前设计。
Skill 使用注意:
- 技能文件本质是注入上下文的文本,来源必须可信,从社区获取的技能包应先人工审查再启用,防范提示注入类风险;
- 避免技能数量无节制膨胀:单个元信息虽小,数十个技能叠加也会侵蚀上下文预算;
- 技能之间如有依赖或冲突,需在描述中明确边界,否则模型可能加载错误组合。
九、总结
回到最初的问题:Skill 是干嘛的?和 RAG、MCP 有什么区别?一句话概括三者的分工:
- RAG 负责“知道”——把外部知识按需检索进上下文;
- MCP 负责“做到”——通过标准化协议连接工具与实时数据;
- Skill 负责“做好,且每次都做好”——把领域经验固化为可复用、可组合、按需加载的知识包。
三者不是替代关系,而是大模型应用工程化过程中,针对“知识、行动、经验”三类瓶颈分别演化出的解法。技术选型时不必纠结“哪个是终局”,更实际的思路是:识别自己系统当前的瓶颈属于哪一类,先解决主要矛盾,再逐步组合三种机制,让模型从“会聊天”真正走向“会干活”。