检索增强生成代理工具

一个基于MCP的工具增强对话代理,支持本地RAG搜索和外部工具调用,适用于研究和搜索场景。

  • by Mokshika04
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Mokshika04/mcp-based-agentic-rag

使用说明

基于MCP的代理RAG(检索增强生成)

概述

该项目使用以下工具实现了一个简单的增强会话代理工具:

  • fastmcp 用于构建MCP工具服务器
  • langchain Ollama 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:交互代理循环;使用LangChain create_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

初创公司

  1. 运行MCP服务器:
uv run server.py
  1. 在另一个终端中,运行客户端:
uv run client.py
  1. 键入查询。工具包括:
  • 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 -持久性和索引