RAG、Function Call、MCP技术笔记
核心概念理解
这三种技术都是为了增强大模型能力的重要手段,但各有侧重点和应用场景。
RAG(检索增强生成)
RAG本质上是为大模型外接一个动态知识库。当模型需要回答问题时,先从知识库中检索相关信息,再结合检索结果生成答案。
核心原理:
- 将文档内容进行向量化存储(通常使用Embedding模型)
- 用户提问时,将问题也向量化
- 通过相似度计算(如欧氏距离、余弦相似度)找到最相关的文档片段
- 将检索到的内容作为上下文传给大模型生成最终答案
Java实现要点:
- 可使用Elasticsearch、Pinecone等向量数据库
- Spring Boot集成OpenAI API进行Embedding
- 常用算法库如Apache Lucene进行相似度计算
Function Call(函数调用)
Function Call让大模型能够主动调用外部函数或API,实现与外部系统的交互。
核心机制:
- 定义函数schema,告诉模型有哪些函数可用
- 模型根据用户输入判断是否需要调用函数
- 执行函数调用并获取结果
- 将结果整合到最终回复中
Java实现示例:
// 定义天气查询函数
public class WeatherFunction {public String getWeather(String city) {// 调用天气APIreturn weatherService.queryWeather(city);}
}
MCP(模型上下文协议)
MCP是一个统一的协议标准,让不同厂商的模型和工具能够无缝集成,就像给AI统一了"手"的概念。
价值体现:
- 跨平台兼容性:一次开发,多处使用
- 统一接口标准:降低集成复杂度
- 生态系统构建:促进AI工具链的标准化
技术选型考虑
RAG适用场景:
- 企业知识库问答系统
- 客服机器人
- 文档检索与总结
- 需要实时更新知识的应用
Function Call适用场景:
- 需要调用外部API的智能助手
- 工作流自动化
- 多系统集成的AI应用
- 需要执行具体操作的场景
MCP适用场景:
- 多模型支持的平台
- 企业级AI基础设施
- 需要工具链标准化的大型项目
技术对比总结
维度 | RAG | Function Call | MCP |
---|---|---|---|
本质 | 外接知识库 | 模型遥控器 | 统一协议标准 |
主要作用 | 知识检索增强 | 外部系统调用 | 跨平台工具集成 |
实时性 | 支持实时更新 | 实时函数调用 | 依赖具体实现 |
技术复杂度 | 中等(需要向量化) | 较低(函数定义) | 较高(协议实现) |
应用场景 | 问答系统、知识库 | API集成、自动化 | 平台级基础设施 |
Java实现难度 | 中等 | 简单 | 复杂 |
提醒
- 理解本质差异:RAG是知识增强,Function Call是能力扩展,MCP是标准统一
- 实际应用经验:准备具体的使用场景和实现方案
- 技术细节掌握:向量化原理、函数schema设计、协议标准理解
- 性能优化:检索效率、调用延迟、协议开销等考虑点