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 中使用多个不同的 Retriever 或 Generation 模块,以执行不同的逻辑任务,例如混合检索或多智能体系统。
实际上,这只需要为相同的模块设置不同的参数即可完成。
为此,UltraRAG 提供了一种简单灵活的机制 ——
通过为同一个 Server 模块配置不同的别名,即可实现模块的复用与独立调用。
使用示例
Step 1:配置别名 Server
在 pipeline.yaml 中,你可以在 servers 字段下为同一个路径定义多个别名:
examples/hybrid_search.yaml# MCP Server
servers:
benchmark: servers/benchmark
dense: servers/retriever
bm25: servers/retriever
custom: servers/custom
# MCP Client Pipeline
pipeline:
- benchmark.get_data
- dense.retriever_init
- bm25.retriever_init
- dense.retriever_search:
output:
ret_psg: dense_psg
- bm25.bm25_search:
output:
ret_psg: sparse_psg
- custom.merge_passages:
input:
ret_psg: dense_psg
temp_psg: sparse_psg
在该示例中,dense 和 bm25 都指向同一个模块路径 servers/retriever,但会作为两个独立的 Server 实例被构建与调用。
Step 2:在 Pipeline 中分别调用
在 Pipeline 定义部分,你可以像调用不同模块一样使用它们的别名:
examples/hybrid_search.yaml# MCP Server
servers:
benchmark: servers/benchmark
dense: servers/retriever
bm25: servers/retriever
custom: servers/custom
# MCP Client Pipeline
pipeline:
- benchmark.get_data
- dense.retriever_init
- bm25.retriever_init
- dense.retriever_search:
output:
ret_psg: dense_psg
- bm25.bm25_search:
output:
ret_psg: sparse_psg
- custom.merge_passages:
input:
ret_psg: dense_psg
temp_psg: sparse_psg
这样,UltraRAG 会在运行时自动区分这两个实例:
每个别名都对应独立的参数文件、运行上下文和缓存空间,从而实现多模块并行、互不干扰的调用。