项目简介
该项目是一个基于Model Context Protocol (MCP) 实现的服务器,专注于提供RAG(检索增强生成)相关功能。它允许大型语言模型(LLM)客户端通过标准的JSON-RPC协议调用其托管的工具,进行文档嵌入、智能检索、管理ChromaDB向量数据库和本地文档,并生成带引用的答案,从而为LLM提供丰富且结构化的上下文信息。
主要功能点
- 文档嵌入: 支持将本地或通过URL提供的PDF文件解析并嵌入到ChromaDB向量数据库中,方便后续检索。
- 智能文档检索: 根据用户提供的查询,从一个或多个ChromaDB集合中查找并检索最相关的文档,支持使用重排序模型提升检索结果的准确性。
- 向量数据库管理: 客户端可以列出所有已存在的ChromaDB集合,删除不再需要的集合,并获取特定集合的统计信息(如文档数量)。
- 本地文档管理: 提供管理本地存储文档的能力,包括列出所有文档、获取特定文档的元数据(如大小、创建/修改时间)以及更新文档的文件名。
- 引文生成: 能够根据检索到的文档内容,为LLM生成的答案添加准确的引用信息,增强答案的可追溯性和可靠性。
- 工具发现: LLM客户端可以通过调用服务器提供的 'describeTools' 工具,动态获取所有可用工具的详细描述,包括其名称、功能、所需参数及返回类型。
安装步骤
- 克隆仓库: 将项目代码下载到您的本地机器。
- 创建并激活Python虚拟环境。 这是一个推荐的做法,可以避免依赖冲突。
- 安装所需Python库:
pip install fastmcp pydantic langchain-chroma langchain-huggingface langchain-community langchain-text-splitters python-dotenv sentence-transformers requests - 下载模型: 运行 'Download Model.py' 脚本以自动下载所需的嵌入模型和重排序模型到项目根目录下的 'Models' 文件夹。
python "Download Model.py" - 配置环境变量: 在项目根目录下创建一个名为 '.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客户端的所有可用工具的名称列表。客户端可以通过这些名称来调用相应的功能。
基本使用方法
- 启动服务器: 在您项目的根目录下,打开终端并运行以下命令启动MCP服务器:
服务器启动后,它将监听来自MCP客户端的请求。python Main.py - MCP客户端交互: 任何兼容Model Context Protocol的LLM客户端,都可以使用上述提供的配置信息连接到该服务器。
- 发现工具: 客户端可以首先调用 'describeTools' 工具,获取服务器上所有可用RAG功能的详细说明,包括每个工具的参数和预期返回。
- 执行RAG操作: 客户端可以根据需求调用具体的工具,例如:
- 调用 'embedPDF' 上传并嵌入新的文档。
- 调用 'retrieveDocs' 或 'searchAcrossCollections' 从向量数据库中检索信息。
- 调用 'citationProvider' 为LLM生成的答案添加引用。
信息
分类
AI与计算