RAG 与 MCP:连接资料和外部工具
RAG 解决什么
RAG 是 Retrieval-Augmented Generation。它不是让模型“记住所有资料”,而是在回答前先检索相关片段,再把这些片段作为上下文交给模型。
Mastra 文档把 RAG 流程拆成:
- 文档处理。
- chunk 切分。
- embedding。
- 写入向量数据库。
- 查询时检索相关 chunk。
mermaid
flowchart LR
A[原始资料] --> B[切分 chunk]
B --> C[生成 embedding]
C --> D[写入向量库]
Q[用户问题] --> E[生成 query embedding]
E --> F[相似度检索]
D --> F
F --> G[相关上下文]
G --> H[Agent 生成回答]教学项目的 Demo 05 使用关键词重叠模拟检索,目的是让你先理解链路。真实生产可以换成 Mastra RAG 文档里的 embedding 和 vector store。
深入学习
chunk 策略、embedding 维度、向量库选择、rerank 和来源引用见 RAG 深入。
MCP 解决什么
MCP 是 Model Context Protocol。Mastra 支持 MCPClient 和 MCPServer:
MCPClient:连接外部 MCP server,把外部工具接入 Agent。MCPServer:把你的 Mastra tools、agents、workflows 暴露给 MCP 客户端。
深入学习
静态工具、动态 toolsets、多用户凭证隔离和 MCP 工具审批见 MCP 集成。
mermaid
flowchart TD
A[Mastra Agent] --> B[MCPClient]
B --> C[外部 MCP Server]
C --> D[GitHub / Docs / 数据库 / 浏览器]
E[其他 Agent 或编辑器] --> F[MCPServer]
F --> G[你的 Mastra Tools 和 Workflows]什么时候用 RAG,什么时候用 MCP
| 场景 | 选择 |
|---|---|
| 回答需要引用内部文档 | RAG |
| 需要搜索、读写外部系统 | MCP 或 Tool |
| 需要把自己的工具开放给别的 Agent | MCPServer |
| 只是本地纯函数计算 | 普通 Tool |
Vibe coding 提示词
text
请帮我把当前本地资料搜索升级成 RAG 风格。
先不要接真实向量数据库。
要求:
- 资料先切成 chunk。
- 查询时计算简单关键词重叠分数。
- 输出 topK 个片段。
- 文档里标注这只是教学版,真实项目可替换为 Mastra RAG + 向量库。验证方式
bash
npm run demo:05你应该能看到:
- 资料被切成片段。
- 查询词被拆分。
- 每个片段得到分数。
- 最终只把相关片段交给回答生成逻辑。