> ## Documentation Index
> Fetch the complete documentation index at: https://ultrarag.openbmb.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 流程控制

## Pipeline 简介

在 UltraRAG 中，Pipeline 是用于定义“推理任务如何执行”的流程脚本，它就像一份“任务计划表”，用于明确系统每一步需要执行的操作。

你可以通过 Pipeline 将不同模块（Server）中的功能（Tool）灵活组合，从而构建出一个完整、可复现、可控的 RAG 推理流程。例如：

* 加载数据 → 检索文档 → 构造 prompt → 调用大模型 → 评估结果；
* 或者在多轮生成中，根据模型中间的表现决定是否重新检索或提前停止生成。

<Note>通过一份 YAML 文件，即可定义并运行完整的 RAG 推理流程。</Note>

## 编写规范

在 UltraRAG 中，Pipeline 以 YAML 文件的形式编写，用于定义完整的任务执行流程。一个 Pipeline 文件通常由两个顶层结构组成：

* `servers`：声明当前流程中所使用的所有 MCP Server 模块。每个 Server 对应一个功能模块（如检索、生成、评测等），键为模块名称，值为其在项目中的路径。
* `pipeline`：定义任务的执行逻辑。其中每一项表示一个执行步骤或流程控制节点，支持串行、循环与分支判断等控制结构。

```yaml examples/rag_full.yaml icon="https://mintcdn.com/ultrarag/T7GffHzZitf6TThi/images/yaml.svg?fit=max&auto=format&n=T7GffHzZitf6TThi&q=85&s=69b41e79144bc908039c2ee3abbb1c3b" theme={null}
servers:
  benchmark: servers/benchmark
  retriever: servers/retriever
  prompt: servers/prompt
  generation: servers/generation
  evaluation: servers/evaluation
  custom: servers/custom

pipeline:
- benchmark.get_data
- retriever.retriever_init
- retriever.retriever_embed
- retriever.retriever_index
- retriever.retriever_search
- generation.generation_init
- prompt.qa_rag_boxed
- generation.generate
- custom.output_extract_from_boxed
- evaluation.evaluate
```
