MCP & A2A 前沿实战
黄佳
新加坡科研局资深研究员
974 人已学习
新⼈⾸单¥59
MCP & A2A 前沿实战
15
15
1.0x
00:00/00:00
登录|注册

04|协议实战(中):从0到1,基于MCP快速搭建RAG“医疗健康“指北”

你好,我是黄佳。
欢迎来到 MCP 协议实战的第二节。我将带你开发一套基于 MCP + FAISS 的 RAG 框架,这个 MCP 服务将具备端到端的索引、检索和工具提供能力,是一个非常清晰的原型 RAG 系统。
RAG 系统流程
说起 RAG(Retrieval-Augmented Generation,检索增强生成),我们肯定都不陌生,它是一种将检索与生成结合起来的对话或问答技术。当用户提出问题时,系统先把问题转成向量(Embedding),在事先构建好的向量数据库中检索出与问题最相关的文档片段,再把这些片段连同原始问题一起喂给大模型(LLM)生成回答。这样可以让模型“看到”最新、最准确的外部知识,弥补它自身训练数据的盲区或时效性不足。
具体流程可以分为三步:
第一步,嵌入(Embedding)——将用户问题转化为向量。
第二步,检索(Retrieval)——在向量索引中找出与这个向量最相近的若干文档块。
第三步,生成(Generation)——把检索到的文档片段和问题一起作为提示,交给大模型输出最终答案。
通过这种“先检索再生成”的方式,RAG 不仅能提升回答的准确度,还能为每一次生成提供可追溯的知识来源。

整体思路

在我们这个 MCP 服务提供的 RAG 示例中,嵌入(Embedding)服务和检索(Retrieval)都以工具的形式通过 MCP 协议提供给 Client (因此我们的 MCP RAG 服务器就像是嵌入模型 + 向量数据库的结合)。而最后的生成仍由 Client 端的大模型来完成,此外,要进行嵌入的文档也由 Client 来提供给 MCP 服务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. RAG系统是一种结合检索与生成的对话或问答技术,通过将用户问题转化为向量,检索最相近的文档块,再由大模型生成最终答案,提升回答准确度并提供可追溯的知识来源。 2. MCP服务提供的RAG示例中,嵌入和检索以工具的形式通过MCP协议提供给Client,而生成由Client端的大模型完成,整体设计思路清晰。 3. 通过代码实现,展示了服务器端的向量检索功能,包括导入相关库、初始化MCP Server、向量索引的初始化以及嵌入生成的函数定义。 4. 服务端通过FastMCP核心类来初始化MCP server,支持多种传输方式,并提供一键启动的方法,使实现变得简单易用。 5. 客户端通过StdioServerParameters启动服务器进程,并用MCP的stdio通道建立双向通信,通过DeepSeek提供的OpenAI兼容接口发起对话,设置tools=self.tools, tool_choice="auto",捕获tool_calls并转发给MCP会话执行相应的函数。 6. 在客户端main()里,先批量索引一组医学文档,然后进入命令行交互,用户输入问题后触发query(),会话结束后优雅地关闭MCP会话和进程. 7. 使用FAISS的IndexFlatL2建立了一个内存版的L2距离索引,向量维度为1536,_docs列表用于保存原始文本,以便后续检索时通过索引位置映射回对应文档。 8. 定义了嵌入生成的函数,通过异步调用OpenAI Embeddings API批量生成文本向量并返回float32 numpy数组。 9. 客户端RagClient负责与MCP服务端通信,关键功能包括使用stdio_client建立连接,动态获取服务器端提供的工具列表,实现动态工具调用机制,自动根据LLM的工具调用请求执行相应的MCP工具。 10. 整个过程中MCP的通信机制明确分为三个阶段:初始化阶段、通信阶段和终止阶段,保证了服务的稳健性和客户端的可扩展性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MCP & A2A 前沿实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)