本项目是一个基于 Retrieval-Augmented Generation (RAG) 技术的文档助手,专门用于Myntra的Appliqué设计系统文档。它通过 Model Context Protocol (MCP) 对外提供服务,使LLM客户端(如Cursor IDE)能够方便地查询和利用这些文档信息。

主要功能点

  • 文档抓取与处理: 自动从Appliqué官网抓取设计系统文档,并进行结构化处理。
  • 向量数据库存储: 将处理后的文档内容及其嵌入向量存储在Qdrant向量数据库中。
  • 智能查询路由: 使用LLM分析用户查询,将其路由到相关的组件文档集合。
  • 上下文检索: 在Qdrant中执行向量相似度搜索,检索最相关的文档片段作为上下文。
  • 智能应答生成: 利用LLM(如OpenAI GPT-3.5)结合检索到的上下文,生成自然语言的应答,包含代码示例和API详情。
  • MCP接口服务: 通过MCP协议暴露文档查询能力,支持Stdio和SSE传输,方便与兼容MCP的客户端集成。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/rohangore1999/Myntra-Applique-RAG.git
    cd Myntra-Applique-RAG
  2. 安装 Python 依赖: 确保已安装 Python 3.7+。
    pip install -r requirements.txt 
    (注:'requirements.txt' 文件未在提供的信息中,但根据代码推断需要'selenium', 'qdrant-client', 'langchain', 'langchain-openai', 'bs4', 'requests', 'webdriver-manager', 'python-dotenv', 'Flask'等库,用户需要自行创建或安装。)
  3. 安装 Node.js 依赖: 确保已安装 Node.js 和 npm/yarn。
    cd mcp
    npm install # 或 yarn install
    cd .. # 返回项目根目录
  4. 安装 Chrome 浏览器及 WebDriver: Selenium 需要控制浏览器进行抓取。'webdriver-manager' 会尝试自动下载 WebDriver,但请确保系统已安装 Chrome 浏览器。
  5. 启动 Qdrant 向量数据库: 项目使用本地运行的 Qdrant 服务器(默认地址 'http://localhost:6333')。需要单独运行 Qdrant 服务,推荐使用 Docker。
    docker run -p "6333:6333" -p "6334:6334" qdrant/qdrant
  6. 配置 OpenAI API 密钥: 在项目根目录下创建 '.env' 文件,添加您的OpenAI API密钥。
    OPEN_API_KEY="YOUR_OPENAI_API_KEY"
  7. 运行数据摄取: 抓取并处理文档,构建向量数据库。
    python app.py --ingest
  8. 运行 RAG API 后端: 这是 MCP 服务器调用的内部 API。
    python api.py
    或使用 Flask 开发服务器:
    flask run --host=0.0.0.0 --port=5001

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

MCP服务器代码位于 'mcp/stdio/index.js'。当您的MCP客户端需要连接到这个服务器时,通常需要在客户端配置服务器的启动信息。

  • Server Name: 'Applique Component RAG' (在MCP服务器代码中定义)
  • Command: 'node' (启动 Node.js 进程的命令)
  • Args: '["./mcp/stdio/index.js"]' (传递给 'node' 命令的参数,即服务器脚本的相对路径)
  • Transport: 'stdio' (使用的传输协议,对应 'StdioServerTransport')

重要提示: 在启动MCP客户端并连接到此服务器之前,请确保 Qdrant 数据库正在运行,并且 RAG API 后端 ('python api.py') 已经启动并在 'http://localhost:5001' 可访问。

基本使用方法 (通过MCP客户端调用)

一旦MCP客户端配置并连接成功,它就可以通过MCP协议调用服务器暴露的工具。本项目暴露了一个名为 'getAppliqueComponentDetails' 的工具。

客户端会向服务器发送一个包含工具调用请求的JSON-RPC消息。例如,一个查询请求可能类似于:

{
  "jsonrpc": "2.0",
  "method": "tool/getAppliqueComponentDetails",
  "params": {
    "query": "如何使用modal组件?"
  },
  "id": "some-request-id"
}

服务器接收到请求后,会执行 'getAppliqueComponentDetails' 工具的代码,该工具内部会调用本地运行的 Python RAG API ('http://localhost:5001/query') 来获取应答,并将RAG结果封装成MCP响应格式返回给客户端。客户端会收到一个JSON-RPC响应,其中包含RAG生成的文档应答。

例如,响应可能包含如下内容(简化示例):

{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "关于 Modal 组件的说明、用法示例等..."
      }
    ]
  },
  "id": "some-request-id"
}

用户通过客户端的界面(如在IDE中向LLM提问)即可间接调用此工具,获取关于Appliqué组件的文档信息。

信息

分类

AI与计算