项目简介

Conceptual-Search RAG MCP服务器是一个先进的后端服务,它允许大型语言模型(LLM)通过 Model Context Protocol (MCP) 与您的本地文档库进行深度交互。它不仅提供传统的文档搜索功能,更通过 Corpus 驱动的概念提取、WordNet 语义增强以及多信号混合排名等技术,实现了卓越的概念搜索和信息检索精度。该服务器能够处理PDF和EPUB文档,将其转化为可供LLM理解和查询的结构化上下文。

主要功能点

  • 概念驱动的检索: 能够根据高级概念而非仅仅关键词来搜索文档内容,提供更智能的搜索结果。
  • 多文档类型支持: 支持处理PDF和EPUB格式的本地文档,方便您整合各类资料。
  • 丰富的工具集: 提供八种专门的搜索工具,例如按标题、作者搜索文档,按概念搜索内容,在特定文档内进行详细搜索,以及浏览和列出文档类别及相关概念等。
  • 智能内容提取: 自动从文档中提取100+个关键概念,并进行语义丰富,提升LLM的理解能力。
  • 增量式数据更新: 支持快速增量更新文档,无需每次都重新处理整个库,节省时间。
  • 高性能搜索: 结合向量搜索、BM25和概念匹配,提供高精度的混合排名结果,确保相关性。
  • Clean Architecture设计: 采用清晰的架构设计,确保系统易于维护、扩展和测试。

安装步骤

  1. 克隆仓库: 打开您的终端或命令行工具,执行以下命令克隆项目仓库并进入其目录:
    git clone https://github.com/m2ux/concept-rag.git
    cd concept-rag
  2. 安装Node.js依赖: 项目依赖Node.js包管理器。请在项目根目录执行:
    npm install
  3. 构建项目: 构建TypeScript源代码为可执行的JavaScript:
    npm run build
  4. 安装Python依赖 (NLTK): 此项目利用Python的NLTK库进行WordNet语义增强。请确保您的系统安装了Python 3.9+,然后执行:
    pip3 install nltk
    python3 -c "import nltk; nltk.download('wordnet'); nltk.download('omw-1.4')"
  5. 配置API密钥: 为了进行概念提取和文档概括,服务器需要访问大型语言模型API(通过OpenRouter)。 首先复制示例配置文件:
    cp .env.example .env
    然后,编辑新创建的 '.env' 文件,在其中添加您的 'OPENROUTER_API_KEY'。如果您没有OpenRouter账户,可以在 openrouter.ai/keys 注册获取API密钥。

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

此MCP服务器设计用于与各种MCP客户端(例如 Cursor 或 Claude Desktop)无缝集成。您需要在MCP客户端的配置文件中添加以下JSON条目,以告诉客户端如何启动和连接到此服务器。

例如,对于 Cursor 客户端,您通常会在 '~/.cursor/mcp.json' 文件中添加:

{
  "mcpServers": {
    "concept-rag": {
      "command": "node",
      "args": [
        "/path/to/concept-rag/dist/conceptual_index.js",
        "/home/username/.concept_rag"
      ],
      "description": "通过概念搜索与本地PDF/EPUB文档交互的RAG服务器"
    }
  }
}
  • '"concept-rag"': 这是您在MCP客户端中识别此服务器的名称。
  • '"command": "node"': 运行此服务器所需的命令,因为它是Node.js应用。
  • '"args": [...]' (参数列表):
    • '"/path/to/concept-rag/dist/conceptual_index.js"': 这是MCP服务器主入口文件的绝对路径。请务必将其替换为您实际的项目安装路径。
    • '"/home/username/.concept_rag"': 这是LanceDB数据库的存储路径。您可以选择使用默认路径或指定自定义路径,但应与您在后续“填充文档库”步骤中使用的路径一致。

配置完成后,请重启您的MCP客户端。MCP客户端将自动检测并启动配置好的 'concept-rag' 服务器。

基本使用方法

  1. 填充文档库 (数据注入): 在MCP服务器能够提供服务之前,您需要将本地的文档(PDF/EPUB)导入其数据库。 首先,确保您的环境变量已加载:

    source .env

    然后,运行以下命令来初始化数据库并导入文档:

    npx tsx hybrid_fast_seed.ts --dbpath ~/.concept_rag --filesdir ~/Documents/my-pdfs --overwrite
    • '--dbpath': 指定数据库的存储路径。建议与MCP客户端配置中的路径保持一致。
    • '--filesdir': 指定一个包含您的PDF和EPUB文档的文件夹路径。服务器将递归扫描此目录。
    • '--overwrite': (可选) 如果是首次运行或需要清除并重新处理所有现有数据,请使用此标志。

    如果您只想添加新的文档而不想重新处理所有文档,可以使用增量式种子命令,这会快很多:

    npx tsx hybrid_fast_seed.ts --dbpath ~/.concept_rag --filesdir ~/Documents/my-pdfs
  2. 在MCP客户端中使用: 重启MCP客户端后,您可以通过自然语言与LLM交互。LLM将识别并调用此MCP服务器提供的工具,以回答关于您文档库的问题。 例如,您可以向LLM提问:

    • "我有哪些关于战略的文档?" (LLM会使用 'catalog_search' 工具)
    • "从我的文档中解释‘创新’这个概念。" (LLM会使用 'concept_search' 工具)
    • "组织如何实施战略规划?" (LLM会使用 'broad_chunks_search' 工具)
    • "列出我文档库中的所有文档类别。" (LLM会使用 'list_categories' 工具)

信息

分类

数据库与文件