UltraRAG 2.0:用极简代码构建高性能检索增强生成系统
几十行代码,实现类 Search-o1 的复杂推理流程,专注科研创新,告别工程负担。
你是否曾在构建检索增强生成(RAG)系统时,被复杂的工程实现困扰?随着 RAG 系统从简单的“检索+生成”向融合自适应知识组织、多轮推理、动态检索的复杂知识系统演进,科研人员面临的工程挑战也日益加剧。传统方法需要大量代码实现流程控制、模块集成和实验评估,不仅耗时耗力,还容易引入错误。
现在,这一切有了新的解决方案——UltraRAG 2.0。
什么是 UltraRAG 2.0?
UltraRAG 2.0(UR-2.0)是清华大学 THUNLP 实验室、东北大学 NEUIR 实验室、OpenBMB 与 AI9stars 联合推出的基于 Model Context Protocol (MCP) 架构设计的 RAG 框架。这一框架的革命性在于:只需编写 YAML 文件,就可以直接声明串行、循环、条件分支等复杂逻辑,极大降低了复杂 RAG 系统的技术门槛与学习成本。
想象一下,你能否用几十行代码实现类似 Search-o1 的多轮迭代检索生成流程?UltraRAG 2.0 让这成为可能。
核心亮点:为什么选择 UltraRAG 2.0?
🚀 低代码构建复杂 Pipeline
UltraRAG 2.0 原生支持串行、循环、条件分支等推理控制结构。你不需要编写复杂的程序逻辑,只需通过 YAML 文件声明执行流程,就能构建强大的迭代式 RAG 系统。
⚡ 快速复现与功能扩展
基于 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 接口实现调用。这种设计既保证了模块功能扩展的灵活性,又允许新模块以”热插拔”方式接入,无需对全局代码进行侵入式修改。

复杂 RAG 推理框架的开发具有显著挑战,而 UltraRAG 2.0 之所以能在低代码条件下支持复杂系统构建,核心在于其底层对多结构 Pipeline 流程控制的原生支持。所有控制逻辑均可在 YAML 层完成定义与调度,覆盖复杂推理任务所需的多种流程表达方式。
在实际运行中,推理流程的调度由内置 Client 执行,其逻辑完全由用户编写的外部 Pipeline YAML 脚本描述,从而实现与底层实现的解耦。开发者可以像使用编程语言关键字一样调用 loop、step 等指令,以声明的方式快速构建多阶段推理流程。
安装指南:快速开始使用 UltraRAG 2.0
环境准备
使用 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
# 如需使用 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
快速上手:三步构建你的第一个 RAG 系统
UltraRAG 2.0 的使用流程极为简单,只需三个步骤:
-
编译 Pipeline 文件生成参数配置 -
修改参数文件 -
运行 Pipeline 文件
我们提供了从入门到进阶的完整教学示例,欢迎访问教程文档快速上手 UltraRAG 2.0!
常用功能目录
以下是科研中常用功能的快速导航:
全面支持:数据集、语料库与基线方法
UltraRAG 2.0 开箱即用,内置支持当前 RAG 领域最常用的公开评测数据集、大规模语料库以及典型基线方法,方便科研人员快速复现与扩展实验。
支持的数据集
UltraRAG 2.0 支持多种类型的评测数据集,覆盖了 QA、多跳 QA、多项选择、长表单 QA、事实验证、对话和槽填充等任务类型:
任务类型 | 数据集名称 | 原始数据数量 | 评测采样数量 |
---|---|---|---|
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 |
支持的语料库
语料库名称 | 文档数量 |
---|---|
wiki-2018 | 21,015,324 |
wiki-2024 | 整理中,即将上线 |
完整的数据集可通过该链接访问与下载。你也可以参考数据格式说明,灵活地自定义并添加任意数据集或语料库。
支持的基线方法(持续更新)
UltraRAG 2.0 持续集成最新基线方法,方便研究者进行对比实验:
基线名称 | 脚本 |
---|---|
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 |
常见问题解答
UltraRAG 2.0 适合哪些用户?
UltraRAG 2.0 特别适合以下用户群体:
-
科研人员:希望快速实现和验证新的 RAG 算法思路,而不想陷入工程细节 -
学生和初学者:想要学习 RAG 技术但被复杂实现吓退的学习者 -
工程师:需要快速原型验证和迭代 RAG 应用场景的开发人员
我需要多少编程经验才能使用 UltraRAG 2.0?
UltraRAG 2.0 的设计理念是降低使用门槛。即使你只有基本的 Python 和 YAML 知识,也能快速上手。框架通过声明式的方式让你关注于流程设计而非实现细节。
UltraRAG 2.0 的性能如何?
由于基于标准化的 MCP 架构,UltraRAG 2.0 在保持易用性的同时,不牺牲性能。模块化的设计允许每个组件独立优化,而且支持分布式部署,可以满足大规模应用的需求。
如何扩展 UltraRAG 2.0 的功能?
扩展功能非常简单:只需实现一个新的 MCP Server,注册相应的 Tool 函数,然后在 YAML 配置文件中调用即可。这种热插拔式的设计让功能扩展变得轻松且不会影响现有系统。
结语
UltraRAG 2.0 代表了 RAG 技术发展的一个新方向——通过标准化和模块化降低复杂系统的实现门槛。无论你是研究者、学生还是工程师,UltraRAG 2.0 都能帮助你更专注于算法创新和实验设计,而不是工程实现细节。
现在就开始使用 UltraRAG 2.0,体验用几十行代码构建高性能 RAG 系统的便捷吧!如果你有任何问题或建议,欢迎通过我们的社区渠道与我们联系。