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


整体思路
- 深入了解
- 翻译
- 解释
- 总结

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