UltraRag components are primarily updated and managed through its modular architecture and declarative YAML configuration files, allowing developers to modify, replace, or upgrade parts of their RAG pipelines without altering core code. This approach treats components as independent MCP Servers (Model Context Protocol Servers) that can be orchestrated flexibly. UltraRag’s design emphasizes a low-code environment where complex workflow logic, including sequences, loops, and conditional branches, is defined directly within these YAML files, making the update process straightforward and transparent.
To update UltraRag components, the main method involves editing the pipeline’s YAML configuration. This configuration specifies the various modules (servers) required for a process, such as retrievers, generators, and evaluators, and defines the sequence of functional calls (tools) within each server. For instance, to integrate a new retriever or update an existing one, a developer would adjust the servers section of their YAML file to point to the new module or modify its parameters. UltraRag’s built-in ultrarag build command can assist in this process by automatically compiling servers and generating necessary server.yaml and parameter.yaml files, ensuring that configurations are correctly structured and validated. This method simplifies debugging and accelerates workflow iteration, as changes are declarative rather than requiring deep code modifications.
Furthermore, UltraRag’s modular encapsulation means that new components can be “hot-plugged” or upgraded like plugins without invasive changes to the global codebase. This is facilitated by the Model Context Protocol (MCP) architecture, which standardizes communication between components. If a component, such as a vector database like Milvus, is being used within an UltraRag pipeline, updating that specific component would involve deploying the new version of the Milvus instance and then ensuring the UltraRag YAML configuration points to the updated service. UltraRag’s support for decoupling the retriever and index, including native support for Milvus and Faiss, allows for greater flexibility in managing and updating these underlying data infrastructure components. For larger framework updates, such as migrating between major UltraRag versions (e.g., from 2.0 to 3.0), users would typically clone the updated project from its GitHub repository and adapt their existing YAML configurations to align with any new features or architectural changes.