| 项目主页 | 教程文档 | 每日论文 | 简体中文 | English |
更新日志 🔥
- [2025.10.22] 🎉 UltraRAG 2.1 正式发布:RAG Servers 全面升级——重构文档解析与知识库构建流程,强化多模态 RAG 能力,支持更多后端框架。
- [2025.09.23] 新增每日 RAG 论文分享,每日更新最新前沿 RAG 工作 👉 |📖 论文|
历史更新
- [2025.09.09] 发布轻量级 DeepResearch Pipeline 本地搭建教程 👉 |📺 bilibili|📖 博客|
- [2025.09.01] 发布 UltraRAG 安装与完整 RAG 跑通视频 👉 |📺 bilibili|📖 博客|
- [2025.08.28] 🎉 发布 UltraRAG 2.0!UltraRAG 2.0 全新升级:几十行代码实现高性能 RAG,让科研专注思想创新!
- [2025.01.23] 发布 UltraRAG!让大模型读懂善用知识库!我们保留了UltraRAG 1.0的代码,可以点击 v1 查看。
检索增强生成系统(RAG)正从早期“检索+生成”的简单拼接,走向融合 自适应知识组织、多轮推理、动态检索 的复杂知识系统(典型代表如 DeepResearch、Search-o1)。但这种复杂度的提升,使科研人员在 方法复现、快速迭代新想法 时,面临着高昂的工程实现成本。
为了解决这一痛点,清华大学 THUNLP 实验室、东北大学 NEUIR 实验室、OpenBMB 与 AI9stars 联合推出 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 结果;
- 方便科研人员进行系统性对比与优化实验。
在不同的 RAG 系统中,检索、生成等核心能力在功能上具有高度相似性,但由于开发者实现策略各异,模块之间往往缺乏统一接口,难以跨项目复用。Model Context Protocol (MCP) 作为一种开放协议,规范了为大型语言模型(LLMs)提供上下文的标准方式,并采用 Client–Server 架构,使得遵循该协议开发的 Server 组件可以在不同系统间无缝复用。
受此启发,UltraRAG 2.0 基于 MCP 架构,将 RAG 系统中的检索、生成、评测等核心功能抽象并封装为相互独立的 MCP Server,并通过标准化的函数级 Tool 接口实现调用。这一设计既保证了模块功能扩展的灵活性,又允许新模块以“热插拔”的方式接入,无需对全局代码进行侵入式修改。在科研场景中,这种架构让研究者能够以极低的代码量快速适配新的模型或算法,同时保持整体系统的稳定性与一致性。
复杂 RAG 推理框架的开发具有显著挑战,而 UltraRAG 2.0 之所以能够在低代码条件下支持复杂系统的构建,核心在于其底层对多结构 Pipeline 流程控制的原生支持。无论是串行、循环还是条件分支,所有控制逻辑均可在 YAML 层完成定义与调度,覆盖复杂推理任务所需的多种流程表达方式。在实际运行中,推理流程的调度由内置 Client 执行,其逻辑完全由用户编写的外部 Pipeline YAML 脚本 脚本描述,从而实现与底层实现的解耦。开发者可以像使用编程语言关键字一样调用 loop、step 等指令,以声明的方式快速构建多阶段推理流程。
通过将 MCP 架构 与 原生流程控制深度融合,UltraRAG 2.0 让复杂 RAG 系统的搭建像“编排流程”一样自然高效。此外,框架内置 17 个主流 benchmark 任务与多种高质量 baseline,配合统一的评测体系与知识库支持,进一步提升了系统开发的效率与实验的可复现性。
conda create -n ultrarag python=3.11
conda activate ultrarag
通过 git 克隆项目到本地或服务器:
git clone https://github.com/OpenBMB/UltraRAG.git --depth 1
cd UltraRAG
我们推荐使用 uv 来进行包管理,提供更快、更可靠的 Python 依赖管理体验:
pip install uv
uv pip install -e .
如果您更习惯 pip,也可以直接运行:
pip install -e .
运行以下命令验证安装是否成功:
# 成功运行显示'Hello, UltraRAG 2.0!' 欢迎语
ultrarag run examples/sayhello.yaml
【可选】UR-2.0支持丰富的Server组件,开发者可根据实际任务灵活安装所需依赖:
# Retriever/Reranker Server依赖:
# infinity
uv pip install infinity_emb
# sentence_transformers
uv pip install sentence_transformers
# openai
uv pip install openai
# bm25
uv pip install bm25s
# 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)
# websearch
# exa
uv pip install exa_py
# tavily
uv pip install tavily-python
# 一键安装:
uv pip install -e ".[retriever]"
# Generation Server依赖:
# vllm
uv pip install vllm
# openai
uv pip install openai
# hf
uv pip install transformers
# 一键安装:
uv pip install -e ".[generation]"
# Corpus Server依赖:
# chonkie
uv pip install chonkie
# pymupdf
uv pip install pymupdf
# mineru
uv pip install "mineru[core]"
# 一键安装:
uv pip install -e ".[corpus]"
# 安装所有依赖:
uv pip install -e ".[all]"
# 或使用conda导入环境:
conda env create -f environment.yml
通过 git 克隆项目到本地或服务器:
git clone https://github.com/OpenBMB/UltraRAG.git --depth 1
cd UltraRAG
构建镜像:
docker build -t ultrarag:v0.2.1 .
运行交互环境:
docker run -it --rm --gpus all ultrarag:v0.2.1 bash
运行以下命令验证安装是否成功:
# 成功运行显示'Hello, UltraRAG 2.0!' 欢迎语
ultrarag run examples/sayhello.yaml
我们提供了从入门到进阶的完整教学示例,欢迎访问教程文档快速上手 UltraRAG 2.0!
阅读快速开始,了解如何基于 UltraRAG 运行一个完整的 RAG Pipeline。
UltraRAG 2.0 开箱即用,已在 ModelScope 和 Huggingface 上同步发布当前 RAG 领域最常用的 公开评测数据集以及大规模语料库。 用户可直接下载使用,无需额外清洗或转换,即可与 UltraRAG 的评测管线无缝对接。除此之外还可以参考数据格式说明,灵活地自定义并添加任意数据集或语料库。
任务类型 | 数据集名称 | 原始数据数量 | 评测采样数量 |
---|---|---|---|
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 |
VQA | MP-DocVQA | 591 | 591 |
VQA | ChartQA | 63 | 63 |
VQA | InfoVQA | 718 | 718 |
VQA | PlotQA | 863 | 863 |
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 |
Multi-hop VQA | SlideVQA | 556 | 556 |
Multiple-choice | ARC | 3,548 | 1,000 |
Multiple-choice | MMLU | 14,042 | 1,000 |
Multiple-choice VQA | ArXivQA | 816 | 816 |
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 |
语料库名称 | 文档数量 |
---|---|
Wiki-2018 | 21,015,324 |
Wiki-2024 | 30,463,973 |
MP-DocVQA | 741 |
ChartQA | 500 |
InfoVQA | 459 |
PlotQA | 9,593 |
SlideVQA | 1,284 |
ArXivQA | 8,066 |
基线名称 | 脚本 |
---|---|
Vanilla LLM | examples/vanilla_llm.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 |
感谢以下贡献者在代码提交和测试中的付出。我们也欢迎新的成员加入,共同构建完善的 RAG 生态!
您可以通过以下标准流程来贡献:Fork 本仓库 → 提交 Issue → 发起 Pull Request (PR)。
如果您觉得本项目对您的研究有所帮助,欢迎点亮一颗 ⭐ 来支持我们!
- 关于技术问题及功能请求,请使用 GitHub Issues 功能。
- 关于使用上的问题、意见以及任何关于 RAG 技术的讨论,欢迎加入我们的微信群组,飞书群组和discord,与我们共同交流。
微信群组 |
飞书群组 |
Discord |