项目简介

该项目是一个基于Model Context Protocol (MCP) 实现的服务器,专注于提供RAG(检索增强生成)相关功能。它允许大型语言模型(LLM)客户端通过标准的JSON-RPC协议调用其托管的工具,进行文档嵌入、智能检索、管理ChromaDB向量数据库和本地文档,并生成带引用的答案,从而为LLM提供丰富且结构化的上下文信息。

主要功能点

  • 文档嵌入: 支持将本地或通过URL提供的PDF文件解析并嵌入到ChromaDB向量数据库中,方便后续检索。
  • 智能文档检索: 根据用户提供的查询,从一个或多个ChromaDB集合中查找并检索最相关的文档,支持使用重排序模型提升检索结果的准确性。
  • 向量数据库管理: 客户端可以列出所有已存在的ChromaDB集合,删除不再需要的集合,并获取特定集合的统计信息(如文档数量)。
  • 本地文档管理: 提供管理本地存储文档的能力,包括列出所有文档、获取特定文档的元数据(如大小、创建/修改时间)以及更新文档的文件名。
  • 引文生成: 能够根据检索到的文档内容,为LLM生成的答案添加准确的引用信息,增强答案的可追溯性和可靠性。
  • 工具发现: LLM客户端可以通过调用服务器提供的 'describeTools' 工具,动态获取所有可用工具的详细描述,包括其名称、功能、所需参数及返回类型。

安装步骤

  1. 克隆仓库: 将项目代码下载到您的本地机器。
  2. 创建并激活Python虚拟环境。 这是一个推荐的做法,可以避免依赖冲突。
  3. 安装所需Python库:
    pip install fastmcp pydantic langchain-chroma langchain-huggingface langchain-community langchain-text-splitters python-dotenv sentence-transformers requests
  4. 下载模型: 运行 'Download Model.py' 脚本以自动下载所需的嵌入模型和重排序模型到项目根目录下的 'Models' 文件夹。
    python "Download Model.py"
  5. 配置环境变量: 在项目根目录下创建一个名为 '.env' 的文件,并添加以下配置信息。这些变量用于指定模型加载设备、文档存储路径和ChromaDB持久化路径等。
    DEVICE=cpu # 或 cuda, mps 等,根据您的硬件环境选择。
    DOCUMENT_DIR=./documents # 存储本地文档的目录,请确保该目录存在或会被自动创建。
    CHROMA_DB_PERSIST_DIR=./chroma_db # ChromaDB向量数据库的持久化存储目录,请确保该目录存在或会被自动创建。
    EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 # 用于文档嵌入的模型名称。
    RERANKER_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2 # 用于文档重排序的模型名称。

服务器配置 (供MCP客户端使用)

MCP客户端需要配置服务器的启动信息以建立连接。以下是一个标准的JSON配置示例,其中包含了连接此RAG-MCP服务器所需的关键信息:

{
  "server_name": "RAG",
  "command": "python",
  "args": ["Main.py"],
  "description": "一个提供RAG功能的MCP服务器,用于文档管理和智能检索,支持PDF嵌入和带引用的答案生成。",
  "capabilities": {
    "tools": [
      "describeTools",
      "embedPDF",
      "retrieveDocs",
      "listDBs",
      "deleteCollection",
      "listDocuments",
      "citationProvider",
      "searchAcrossCollections",
      "collectionStats",
      "getDocumentMetadata",
      "updateDocument"
    ]
  }
}
  • 'server_name': 服务器的唯一标识符,本例中为 "RAG"。
  • 'command': 启动MCP服务器所使用的命令,例如 "python"。
  • 'args': 传递给 'command' 的参数列表,这里是 ["Main.py"],表示运行主脚本。
  • 'description': 对MCP服务器功能的简要描述。
  • 'capabilities.tools': 服务器暴露给LLM客户端的所有可用工具的名称列表。客户端可以通过这些名称来调用相应的功能。

基本使用方法

  1. 启动服务器: 在您项目的根目录下,打开终端并运行以下命令启动MCP服务器:
    python Main.py
    服务器启动后,它将监听来自MCP客户端的请求。
  2. MCP客户端交互: 任何兼容Model Context Protocol的LLM客户端,都可以使用上述提供的配置信息连接到该服务器。
  3. 发现工具: 客户端可以首先调用 'describeTools' 工具,获取服务器上所有可用RAG功能的详细说明,包括每个工具的参数和预期返回。
  4. 执行RAG操作: 客户端可以根据需求调用具体的工具,例如:
    • 调用 'embedPDF' 上传并嵌入新的文档。
    • 调用 'retrieveDocs' 或 'searchAcrossCollections' 从向量数据库中检索信息。
    • 调用 'citationProvider' 为LLM生成的答案添加引用。

信息

分类

AI与计算