基于MCP的代理RAG(检索增强生成)
概述
该项目使用以下工具实现了一个简单的增强会话代理工具:
fastmcp用于构建MCP工具服务器langchainOllama LLM的代理商(llama3.2:latest)在客户端- 通过矢量存储+相似性搜索对文档进行本地RAG搜索
- 用于arXiv、GitHub、新闻数据和网络搜索的专用连接器
主要模块:
server.py:MCP服务器公开工具:
- agent_fetch_tools (从 worker_agents/technical_agent.py):研究和搜索工具的多工具编排器。 - conversational_agent (从 worker_agents/general_agent.py):通用会话处理程序。
client.py:交互代理循环;使用LangChaincreate_tool_calling_agent+ChatOllama. 包括动态选择调用哪个代理的主编排器(例如。,agent_fetch_tools或conversational_agent)基于用户的查询。
local_rag_pipeline/vector_search.py:本地文档嵌入+检索API。
local_rag_pipeline/vector_store.py:本地RAG数据的存储/索引助手。
特性
- 代理可以通过MCP服务调用外部工具。
- 本地RAG管道支持对存储在中的本地文档进行语义搜索
MCP pdf data,qdrant_data等等。 - 通过添加工具功能和向FastMCP注册,可以轻松扩展。
先决条件
- Python 3.10+
- Ollama安装和型号
llama3.2:latest可用。 - virtualenv/uv(可选,但推荐)
安装
python -m venv .venv
source .venv/bin/activate
uv install -r requirements.txt初创公司
- 运行MCP服务器:
uv run server.py- 在另一个终端中,运行客户端:
uv run client.py- 键入查询。工具包括:
agent_fetch_tools→ 用于研究和搜索工具的多工具编排器。conversational_agent→ 通用会话处理程序。
类型 exit, bye, quit 退出。
定制
- 在中添加新工具
tools/*.py并注册server.py. - 更新中的本地RAG处理
local_rag_pipeline/vector_search.py. - 修改提示
client.py在...之下ChatPromptTemplate.
故障排除
Ollama连接性:检查已安装的模型和正在运行的守护进程。FastMCP端点是http://127.0.0.1:8000/sse.- 确保本地RAG矢量存在并且路径配置正确。
项目文件
client.py-面向用户的异步代理循环server.py-MCP工具服务器worker_agents/technical_agent.py-多工具编排器worker_agents/general_agent.py-通用会话处理程序tools/arxiv_tool.py-arXiv搜索包装器tools/github_tool.py-GitHub搜索包装器tools/newsdata_tool.py-新闻搜索包装tools/web_search_tool.py-Web搜索包装器local_rag_pipeline/vector_search.py-RAG查询逻辑local_rag_pipeline/vector_store.py-持久性和索引
