In many practical scenarios, you may want to use multiple different Retriever or Generation modules in the same Pipeline to perform different logical tasks, such as hybrid retrieval or multi-agent systems.
In fact, this only requires setting different parameters for the same module.For this reason, UltraRAG provides a simple and flexible mechanism —
By configuring different aliases for the same Server module, module reuse and independent calling can be achieved.
In this example, both dense and bm25 point to the same module path servers/retriever, but will be built and called as two independent Server instances.
In this way, UltraRAG automatically distinguishes these two instances at runtime:
Each alias corresponds to independent parameter files, runtime context, and cache space, thereby achieving multi-module parallel and non-interfering calls.