AI Agent开发中RAG与MCP的应用
目录
- 大语言模型目前的不足
- 什么是RAG
- 使用RAG的好处
- RAG的典型实现方法
- RAG——构建数据索引
- RAG——检索
- RAG——生成
- RAG具体应用——问答环节
- RAG具体应用——知识库溯源
- 什么是MCP
- MCP的组成部分
- 为什么需要MCP
- MCP和Function Calling的区别
- MCP具体应用——预约信息格式
- MCP具体应用——线下预约示例
- MCP具体应用——代码实现
大语言模型目前的不足
• 幻觉问题: LLM文本生成的底层原理是基于概率的token by token的形式,因此会不可避免地产生“一本正经的胡说八道”的情况;
• 时效性问题: LLM的规模越大,大模型训练的成本越高,周期也就越长。那么具有时效性的数据也就无法参与训练,所以也就无法直接回答时效性相关的问题,例如“帮我推荐几部2025年热映的电影?”;
• 数据安全问题: 通用的LLM没有企业内部数据和用户数据,那么企业想要在保证安全的前提下使用LLM,最好的方式就是把数据全部放在本地,企业数据的业务计算全部在本地完成。而在线的大模型仅仅完成一个归纳的功能;
什么是RAG
RAG(Retrieval Augmented Generation, 检索增强生成),即大语言模型在回答问题或生成文本时,先会从大量预置或上传的文档中检索出相关的信息,然后基于这些信息生成回答或文本,从而提高预测质量。
 
使用RAG的好处
• 提升准确性与可信度: RAG通过引用外部检索到的信息来源,使模型输出具备可追溯性,用户可核实答案真实性,从而提升结果的准确性和可信度。相比仅依赖内部参数的传统LLM,RAG能有效降低生成虚构或错误信息的风险。
• 增强时效性与知识更新能力: 通过检索最新的文档或数据库,RAG能够提供训练数据截止后发生的事件或动态信息,显著优于静态训练模型在时效性上的局限。只需更新检索库中的内容,即可实现知识迭代,避免了传统微调所需的高昂再训练成本。
• 提高可解释性与可控性: 检索到的文档片段作为生成依据,相当于为回答提供了“证据”,增强了模型决策过程的透明度和可理解性。企业或开发者可通过控制检索源的内容、权限和结构,精准引导模型输出,实现对生成内容的安全与合规管理。
• 支持定制化与领域专业化: 通过构建特定领域的知识索引(如医疗、金融、法律),RAG可快速转变为专业问答助手,提供垂直领域的高质量服务。
• 优化成本与可扩展性: 无需频繁微调大型模型,仅需调整检索数据库即可适应新需求,降低了计算资源消耗和部署复杂度。
RAG的典型实现方法
RAG 的实现主要包括三个主要步骤:数据索引、检索和生成。
 
RAG——构建数据索引
构建数据索引是一个将原始私域数据转化为可检索向量表示的离线处理过程。
• 数据提取阶段: 从多种格式(如PDF、Word、PPT、Markdown、数据库、API等)中加载数据,并进行统一范式处理;同时进行数据清洗操作。
• 文本分割: 根据语义完整性和embedding模型(如通义text-embedding-v3等)的token限制,采用句分割、固定长度分块或递归分割等方式将文本切分为合理大小片段。
• 向量化: 利用embedding模型将文本块转化为高维向量表示。
• 创建索引: 将生成的向量及其对应文本存入向量数据库(如Redis-stack等),构建可高效检索的索引体系,为后续的检索增强生成(RAG)系统提供可靠的知识来源。
RAG——检索
检索环节的核心在于通过多种技术手段提高检索效率和结果的相关性。
• 元数据过滤: 能够显著提升检索效率和相关度,通过预先筛选出与查询相关的索引块来减少计算负担。
• 图关系检索: 利用知识图谱将实体及其关系转化为节点和边,使得系统可以通过探索这些关系来提供更加精准的答案,特别适用于处理复杂的多跳问题。
• 检索技术: 主要包括向量化相似度检索、关键词检索、全文检索以及传统的SQL检索。其中,向量化相似度检索通过计算文本向量间的距离(如欧氏距离、曼哈顿距离或余弦相似度)来找到最匹配的结果列表。
RAG——生成
文本生成在RAG系统中,并非仅仅依赖大语言模型自身的知识进行自由发挥,而是将用户的原始查询(query) 与从外部知识库中检索到的相关文本片段(retrieved context) 进行有效整合,构造出一个结构合理、信息充分的输入提示(prompt),再交由语言模型生成最终回答。这一过程的核心,本质上是一个提示词工程(Prompt Engineering) 的实践。
问题:爱因斯坦哪一年获得诺贝尔物理学奖?检索到的上下文:阿尔伯特·爱因斯坦因对光电效应的理论解释而获得1921年诺贝尔物理学奖,该奖项于1922年补发。构造的Prompt:请根据以下信息回答问题:[Context] 阿尔伯特·爱因斯坦因对光电效应的理论解释而获得1921年诺贝尔物理学奖,该奖项于1922年补发。[Question] 爱因斯坦哪一年获得诺贝尔物理学奖?[Answer]
RAG具体应用——问答环节

RAG具体应用——知识库溯源
《中华人民共和国未成年人保护法》第二十八条规定,学校应当保障未成年学生受教育的权利,不得违反国家规定开除、变相开除未成年学生。学校应当对尚未完成义务教育的辍学未成年学生进行登记并劝返复学;劝返无效的,应当及时向教育行政部门书面报告。

什么是MCP
MCP(Model Context Protocol,模型上下文协议) 是一种新型标准化协议,旨在为 AI 应用提供统一、高效、可扩展的接口方式,使其能够连接到各种数据源、工具和外部系统。它被形象地比喻为 “AI 应用的 USB-C 端口”——就像 USB-C 成为了设备间通用连接标准一样,MCP 的目标是成为 AI 模型与外部世界交互的通用接口。

MCP的组成部分
Host:运行AI应用的主程序(如Claude Desktop、Cursor、VS Code等)
MCP Client:嵌入在Host中的客户端组件,负责与一个或多个MCP Server建立连接
MCP Server:提供具体功能的服务端,每个 Server对应一个工具或数据源(如文件系统、数据库、API接口等
 
为什么需要MCP
当前主流大模型在调用外部工具时依赖各自私有的函数调用协议(Function Calling),参数格式和结构命名各不相同,导致开发者在集成多个模型或服务时面临严重的“碎片化”问题——每接入一个新模型或工具都需重复编写适配代码,开发成本高且难以统一管理。MCP(Model Context Protocol) 的出现正是为了解决这一痛点:它定义了 AI 工具调用的“行业标准”,通过统一的协议实现大模型与数据库、API、本地文件、浏览器等各类资源之间的标准化连接。开发者只需一次开发即可对接多个支持MCP的客户端和服务端,无需为不同模型重复适配;同时,已有的MCP Server可被广泛复用,极大减少了重复劳动。
MCP和Function Calling的区别
| 对比维度 | Function Calling | MCP | 
|---|---|---|
| 协议标准 | 私有协议(各厂商自定义,如 OpenAI 的 function calling schema) | 开放协议(基于 JSON-RPC 2.0) | 
| 工具发现机制 | 动态获取(需初始化请求或手动配置) | 静态预定义 + 注册中心(工具可被自动发现) | 
| 调用方式 | 同进程函数 / API 调用 | Stdio / SSE / 同进程(支持流式交互) | 
| 扩展成本 | 高(每次新增工具需重新训练/微调模型) | 低(插拔式设计,模型无需修改) | 
| 适用场景 | 单次简单任务(如搜索、翻译) | 复杂流程(多工具协同、Agent 协作) | 
| 生态协作 | 工具与模型强绑定 | 工具开发者与 Agent 开发者解耦 | 
| 工程复杂度 | 低(快速接入单个工具) | 高(需部署 MCP 服务器 + 客户端) | 
| 数据交互 | 直接调用 | 经过协议封装,支持更复杂的上下文流转 | 
MCP具体应用——预约信息格式

MCP具体应用——线下预约示例

MCP具体应用——代码实现

