使用模型上下文协议(MCP)重建代理+RAG系统
使用解耦架构构建的检索增强生成(RAG)系统。它利用 LangChain,由以下电源供电 双子座嵌入 和那个 Gemini 2.5闪光灯型号,并使用 模型上下文协议(MCP) 通过 FastMCP 框架。
该应用程序分为三个主要组件:服务器(后端RAG)、用于测试的异步命令行客户端和用于交互的Streamlit web客户端。
https://github.com/user-attachments/assets/895b83b3-ef0b-4cce-8f7f-ae9140f5eb3b
主要特点
- 双子座动力RAG: 用途
GoogleGenerativeAIEmbeddings(text-embedding-004)用于矢量创建和gemini-2.5-flash用于问答。 - 解耦架构(MCP): RAG逻辑作为单独的服务运行,使用 FastMCP 随着
streamable-http传输,促进模块化和可扩展性。 - 矢量存储: 色度 用于存储和检索文档块。
- 交互式前端: 现代的、基于形式的 溪流 该应用程序提供了一个流畅的聊天界面。
先决条件
在运行应用程序之前,请确保已安装以下内容:
- Python 3.9+
pip和venv
- 安装依赖项:
pip install langchain-google-genai langchain-community langchain-classic fastmcp streamlit python-dotenv pypdf- 设置API密钥:
创建一个名为的文件 .env 在根目录中,并添加您的Gemini API密钥:
GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"- 添加示例数据:
将要查询的PDF文件放入项目根目录并命名 sample.pdf.
🏃 运行应用程序
这是一个 客户端服务器应用程序 并要求 两个步骤 同时奔跑。
步骤1:启动MCP RAG服务器
打开你的 第一端子 并运行服务器文件。此过程加载PDF,创建向量数据库,初始化RAG链,并在上启动MCP服务 http://127.0.0.1:8000.
python rag_mcp_server.py步骤2A:运行Streamlit Web客户端(推荐)
打开A 第二终端 并运行Streamlit前端。此客户端将使用 fastmcp.Client 与正在运行的服务器通信。
streamlit run rag_mcp_client.py浏览器窗口将自动打开聊天界面。
步骤2B:运行终端客户端(用于测试)
或者,您可以直接使用终端客户端测试MCP连接:
python terminal_mcp_client.py后端RAG使用以下顺序:
- 嵌入:
GoogleGenerativeAIEmbeddings(model="text-embedding-004") - 矢量数据库:
Chroma - LLM
ChatGoogleGenerativeAI(model="gemini-2.5-flash") - 链条:
RetrievalQA.from_chain_type将这些组件组合成retrieve_answer功能。
