Skip to content

#Less Code, #Lower Barrier, #Faster Deployment!MCP-based low-code RAG framework, enabling researchers to build complex pipelines to creative innovation.

License

Notifications You must be signed in to change notification settings

OpenBMB/UltraRAG

UltraRAG

更少代码,更低门槛,更快实现

| 项目主页 | 教程文档 | 数据集 | 简体中文 | English |


更新日志 🔥

  • [2025.08.28] 🎉 发布 UltraRAG 2.0! UltraRAG 2.0 全新升级:几十行代码实现高性能 RAG,让科研专注思想创新!
  • [2025.01.23] 发布 UltraRAG! 让大模型读懂善用知识库!我们保留了UltraRAG 1.0的代码,可以点击 v1 查看。

UltraRAG 2.0:面向科研的“RAG实验”加速器

检索增强生成系统(RAG)正从早期“检索+生成”的简单拼接,走向融合 自适应知识组织多轮推理动态检索 的复杂知识系统(典型代表如 DeepResearchSearch-o1)。但这种复杂度的提升,使科研人员在 方法复现快速迭代新想法 时,面临着高昂的工程实现成本。

为了解决这一痛点,清华大学 THUNLP 实验室、东北大学 NEUIR 实验室、OpenBMBAI9stars 联合推出 UltraRAG 2.0 (UR-2.0)—— 首个基于 Model Context Protocol (MCP) 架构设计的 RAG 框架。这一设计让科研人员只需编写 YAML 文件,就可以直接声明串行、循环、条件分支等复杂逻辑,从而以极低的代码量快速实现多阶段推理系统。

其核心思路是:

  • 组件化封装:将RAG 的核心组件封装为标准化的独立 MCP Server
  • 灵活调用与扩展:提供 函数级 Tool 接口,支持功能的灵活调用与扩展;
  • 轻量流程编排:借助 MCP Client,建立自上而下的简洁化链路搭建;

与传统框架相比,UltraRAG 2.0 显著降低了复杂 RAG 系统的 技术门槛与学习成本,让研究者能够将更多精力投入到 实验设计与算法创新 上,而不是陷入冗长的工程实现。

🌟 核心亮点

  • 🚀 低代码构建复杂 Pipeline
    原生支持 串行、循环、条件分支 等推理控制结构。开发者只需编写 YAML 文件,即可实现几十行代码构建的 迭代式 RAG 流程(如 Search-o1 等)。

  • 快速复现与功能扩展
    基于 MCP 架构,所有模块均封装为独立、可复用的 Server

    • 用户可按需自定义 Server 或直接复用现有模块;
    • 每个 Server 的功能以函数级 Tool 注册,新增功能仅需添加一个函数即可接入完整流程;
    • 同时支持调用 外部 MCP Server,轻松扩展 Pipeline 能力与应用场景。
  • 📊 统一评测与对比
    内置 标准化评测流程与指标管理,开箱即用支持 17 个主流科研 Benchmark。

    • 持续集成最新基线;
    • 提供 Leaderboard 结果;
    • 方便科研人员进行系统性对比与优化实验。

秘诀:MCP 架构与原生流程控制

在不同的 RAG 系统中,检索、生成等核心能力在功能上具有高度相似性,但由于开发者实现策略各异,模块之间往往缺乏统一接口,难以跨项目复用。Model Context Protocol (MCP) 作为一种开放协议,规范了为大型语言模型(LLMs)提供上下文的标准方式,并采用 Client–Server 架构,使得遵循该协议开发的 Server 组件可以在不同系统间无缝复用。

受此启发,UltraRAG 2.0 基于 MCP 架构,将 RAG 系统中的检索、生成、评测等核心功能抽象并封装为相互独立的 MCP Server,并通过标准化的函数级 Tool 接口实现调用。这一设计既保证了模块功能扩展的灵活性,又允许新模块以“热插拔”的方式接入,无需对全局代码进行侵入式修改。在科研场景中,这种架构让研究者能够以极低的代码量快速适配新的模型或算法,同时保持整体系统的稳定性与一致性。

UltraRAG

复杂 RAG 推理框架的开发具有显著挑战,而 UltraRAG 2.0 之所以能够在低代码条件下支持复杂系统的构建,核心在于其底层对多结构 Pipeline 流程控制的原生支持。无论是串行、循环还是条件分支,所有控制逻辑均可在 YAML 层完成定义与调度,覆盖复杂推理任务所需的多种流程表达方式。在实际运行中,推理流程的调度由内置 Client 执行,其逻辑完全由用户编写的外部 Pipeline YAML 脚本 脚本描述,从而实现与底层实现的解耦。开发者可以像使用编程语言关键字一样调用 loop、step 等指令,以声明的方式快速构建多阶段推理流程。

通过将 MCP 架构原生流程控制深度融合,UltraRAG 2.0 让复杂 RAG 系统的搭建像“编排流程”一样自然高效。此外,框架内置 17 个主流 benchmark 任务与多种高质量 baseline,配合统一的评测体系与知识库支持,进一步提升了系统开发的效率与实验的可复现性。

安装

使用 Conda 创建虚拟环境:

conda create -n ultrarag python=3.11
conda activate ultrarag

通过 git 克隆项目到本地或服务器:

git clone https://github.com/OpenBMB/UltraRAG.git
cd UltraRAG

我们推荐使用 uv 来进行包管理,提供更快、更可靠的 Python 依赖管理体验:

pip install uv
uv pip install -e .

如果您更习惯 pip,也可以直接运行:

pip install -e .

【可选】UR-2.0支持丰富的Server组件,开发者可根据实际任务灵活安装所需依赖:

# 如需使用faiss进行向量索引:
# 需要根据自己的硬件环境,手动编译安装 CPU 或 GPU 版本的 FAISS:
# CPU版本:
uv pip install faiss-cpu
# GPU 版本(示例:CUDA 12.x)
uv pip install faiss-gpu-cu12
# 其他 CUDA 版本请安装对应的包(例如:CUDA 11.x 使用 faiss-gpu-cu11)

# 如需使用infinity_emb进行语料库编码和索引:
uv pip install -e ."[infinity_emb]"

# 如需使用lancedb向量数据库:
uv pip install -e ."[lancedb]"

# 如需使用vLLM服务部署模型:
uv pip install -e ."[vllm]"

# 如需使用语料库文档解析功能:
uv pip install -e ."[corpus]"

# ====== 安装所有依赖(除faiss) ======
uv pip install -e ."[all]"

运行以下命令验证安装是否成功:

# 成功运行显示'Hello, UltraRAG 2.0!' 欢迎语
ultrarag run examples/sayhello.yaml

快速上手

我们提供了从入门到进阶的完整教学示例,欢迎访问教程文档快速上手 UltraRAG 2.0!

阅读快速上手,了解 UltraRAG 的使用流程。整体分为三步:① 编译 Pipeline 文件生成参数配置;② 修改参数文件;③ 运行 Pipeline 文件

此外,我们整理了一份科研中常用功能的目录,您可以直接点击跳转到所需模块:

支持

UltraRAG 2.0 开箱即用,内置支持当前 RAG 领域最常用的 公开评测数据集大规模语料库 以及 典型基线方法,方便科研人员快速复现与扩展实验。你也可以参考数据格式说明,灵活地自定义并添加任意数据集或语料库。完整的数据集可通过该链接访问与下载。

1. 支持的数据集

任务类型 数据集名称 原始数据数量 评测采样数量
QA NQ 3,610 1,000
QA TriviaQA 11,313 1,000
QA PopQA 14,267 1,000
QA AmbigQA 2,002 1,000
QA MarcoQA 55,636 1,000
QA WebQuestions 2,032 1,000
Multi-hop QA HotpotQA 7,405 1,000
Multi-hop QA 2WikiMultiHopQA 12,576 1,000
Multi-hop QA Musique 2,417 1,000
Multi-hop QA Bamboogle 125 125
Multi-hop QA StrategyQA 2,290 1,000
Multiple-choice ARC 3,548 1,000
Multiple-choice MMLU 14,042 1,000
Long-form QA ASQA 948 948
Fact-verification FEVER 13,332 1,000
Dialogue WoW 3,054 1,000
Slot-filling T-REx 5,000 1,000

2. 支持的语料库

语料库名称 文档数量
wiki-2018 21,015,324
wiki-2024 整理中,即将上线

3. 支持的基线方法(持续更新)

基线名称 脚本
Vanilla LLM examples/vanilla.yaml
Vanilla RAG examples/rag.yaml
IRCoT examples/IRCoT.yaml
IterRetGen examples/IterRetGen.yaml
RankCoT examples/RankCoT.yaml
R1-searcher examples/r1_searcher.yaml
Search-o1 examples/search_o1.yaml
Search-r1 examples/search_r1.yaml
WebNote examples/webnote.yaml

贡献

感谢以下贡献者在代码提交和测试中的付出。我们也欢迎新的成员加入,共同构建完善的 RAG 生态!

您可以通过以下标准流程来贡献:Fork 本仓库 → 提交 Issue → 发起 Pull Request (PR)

支持我们

如果您觉得本项目对您的研究有所帮助,欢迎点亮一颗 ⭐ 来支持我们!

联系我们

  • 关于技术问题及功能请求,请使用 GitHub Issues 功能。
  • 关于使用上的问题、意见以及任何关于 RAG 技术的讨论,欢迎加入我们的微信群组飞书群组discord,与我们共同交流。

About

#Less Code, #Lower Barrier, #Faster Deployment!MCP-based low-code RAG framework, enabling researchers to build complex pipelines to creative innovation.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 9