Token导航 LogoToken导航TokenDH.com
MCP Vs Rag logo
搜索检索stdio官方级别未说明来源级核验

MCP Vs Rag

MCP Server

一个统一的LangGraph工作流框架,用于并行执行RAG和MCP方法,比较它们在问答系统中的性能。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
问答系统PythonLangGraph

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

JhonHander

提供方

JhonHander

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

A unified research framework for comparing RAG and MCP approaches in question-answering systems

![Python](https://www.python.org/) ![LangGraph](https://github.com/langchain-ai/langgraph) ![Qdrant](https://qdrant.tech/) ![License](LICENSE)

______________________________________________________________________

概述

该项目实现了统一的LangGraph工作流 并行RAG和MCP分支 它们同时执行并将结果合并到 单个JSON输出 用于直接比较。

主要特点

特性描述
并行执行RAG和MCP同时运行 asyncio.gather()
上下文隔离每种方法都保持自己的上下文(从不混合)
统一输出每个配置一个JSON文件,包含两个结果
独立鉴定每种方法单独计算的RAGAS指标
公平比较相同的提示、模型和执行条件

建筑

                    User Prompt
                         │
          ┌──────────────┴──────────────┐
          ↓                             ↓
    RAG Branch                     MCP Branch
    (Retrieve → Generate → Eval)   (Search → Generate → Eval)
          ↓                             ↓
          └──────────────┬──────────────┘
                         ↓
                  Merge Results
                         ↓
              Single Unified JSON
              (Contains both RAG and MCP results)

______________________________________________________________________

项目结构

mcp-vs-rag/
├── config/
│   └── docker-compose.yml      # Qdrant configuration
├── src/
│   ├── rag/                    # RAG implementations (Naive & Hybrid)
│   ├── mcp/                    # MCP client for tool integration
│   ├── models/                 # LLM factory (GPT-5, Gemini 2.5 Pro)
│   ├── evaluation/             # RAGAS evaluator
│   └── workflow/               # LangGraph workflow orchestration
├── data/
│   ├── knowledge_base/         # RAG data (chunks, embeddings, originals)
│   └── outputs/                # Experiment results (JSON files)
├── requirements.txt
├── .env.example
├── run_experiment.py           # Main experiment runner
├── README.md                   # This file
└── copilot-instructions.md     # Development guide

______________________________________________________________________

快速开始

1.安装依赖项

pip install -r requirements.txt

2.配置环境

cp .env.example .env

编辑 .env 使用API密钥:

  • OPENAI_API_KEY --GPT-5
  • GOOGLE_API_KEY --适用于Gemini 2.5 Pro
  • TAVILY_API_KEY --Tavily MCP工具

3.启动Qdrant数据库

cd config
docker-compose up -d

4.运行实验

python run_experiment.py

这将执行实验 所有问题 从地面实况数据集中,运行 8种配置 对于每个问题:

型号RAG类型MCP工具
GPT-5(OpenAI)天真塔维利
Gemini 2.5 Pro(谷歌)混合动力DuckDuckGo

命令行选项

命令描述
python run_experiment.py带所有问题运行(默认)
python run_experiment.py 5随机回答5个问题
python run_experiment.py 1随机回答1个问题

结果保存到 data/outputs/ 作为两个主要的JSON文件。

______________________________________________________________________

输出文件

当运行多个问题的实验时,系统会生成 只有两个主文件:

文件描述
experiment_summary.json完整的实验总结,包括所有问题和配置的所有结果
consolidated_analysis.json所有问题的全局比较分析,指标按模型、RAG类型、MCP服务器和问题绩效分组

______________________________________________________________________

输出格式

每个实验产生一个 统一JSON文件 包含RAG和MCP结果:

View JSON Structure

{
  "execution_id": "uuid",
  "timestamp": "2025-11-03T10:30:00",
  "configuration": {
    "model": "gpt-5",
    "rag_type": "naive",
    "mcp_server": "tavily"
  },
  "prompt": "What are the latest AI developments?",
  
  "rag_results": {
    "retrieved_context": ["Context from Qdrant..."],
    "generated_answer": "Based on knowledge base...",
    "ragas_metrics": {
      "answer_relevancy": 0.87,
      "faithfulness": 0.92
    }
  },
  
  "mcp_results": {
    "retrieved_context": ["Web search from Tavily..."],
    "generated_answer": "Based on web sources...",
    "ragas_metrics": {
      "answer_relevancy": 0.82,
      "faithfulness": 0.89
    }
  }
}

______________________________________________________________________

配置

实验配置

系统运行中定义的8种组合 run_experiment.py:

View Configurations

CONFIGURATIONS = [
    {"model": "gpt-5", "rag_type": "naive", "mcp_server": "tavily"},
    {"model": "gpt-5", "rag_type": "naive", "mcp_server": "duckduckgo"},
    {"model": "gpt-5", "rag_type": "hybrid", "mcp_server": "tavily"},
    {"model": "gpt-5", "rag_type": "hybrid", "mcp_server": "duckduckgo"},
    {"model": "gemini-2.5-pro", "rag_type": "naive", "mcp_server": "tavily"},
    {"model": "gemini-2.5-pro", "rag_type": "naive", "mcp_server": "duckduckgo"},
    {"model": "gemini-2.5-pro", "rag_type": "hybrid", "mcp_server": "tavily"},
    {"model": "gemini-2.5-pro", "rag_type": "hybrid", "mcp_server": "duckduckgo"},
]

定制

修改 run_experiment.py 致:

  • 更改测试提示
  • 添加/删除配置
  • 调整输出格式
  • 修改评估指标

______________________________________________________________________

技术栈

类别技术
编排LangGraph(并行工作流执行)
向量数据库Qdrant(Docker)
MCP工具Tavily&DuckDuckGo(网络搜索)
评估RAGAS(答案相关性+可信度)
LLM模型GPT-5(OpenAI)、Gemini 2.5 Pro(谷歌)
语言Python 3.8+

______________________________________________________________________

分析与比较

运行实验后,您可以分析:

分析类型要回答的问题
RAG与MCP性能哪种方法的相关性/忠诚度得分更好?
模型比较GPT-5或Gemini 2.5 Pro的表现更好吗?
RAG战略评估混合RAG的表现优于纯RAG吗?
MCP工具选择Tavily或DuckDuckGo是否提供了更好的上下文?

______________________________________________________________________

发展

有关详细的开发说明,请参阅 copilot-instructions.md.

代码输入点

from src.workflow.main_workflow import execute_unified_workflow

result = await execute_unified_workflow(
    prompt="Your question here",
    model_name="gpt-5",
    rag_type="naive",
    mcp_server="tavily"
)

运行测试

View Test Example

python -c "
import asyncio
from src.workflow.main_workflow import execute_unified_workflow

async def test():
    result = await execute_unified_workflow(
        prompt='What is quantum computing?',
        model_name='gpt-5',
        rag_type='naive',
        mcp_server='tavily'
    )
    print(result)

asyncio.run(test())
"

______________________________________________________________________

需求

要求详细信息
python3.8+
码头工人对于Qdrant
API密钥OpenAI、谷歌、塔维利

MCP服务器

# Tavily
docker run -i --rm -e TAVILY_API_KEY mcp/tavily

# DuckDuckGo
docker run -i --rm mcp/duckduckgo

______________________________________________________________________

贡献

  1. 克隆该仓库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

______________________________________________________________________

许可证

MIT许可证

______________________________________________________________________

报告Bug · 请求功能

目录标签

目录标签

问答系统PythonLangGraph本地部署RAGMCP并行执行性能比较

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP