Chapter 6

Multi-Agent RAG Systems

Designing hierarchical, multi-expert systems where specialized agents collaborate to solve complex, multi-domain problems.

The Power of Specialization

Single-agent systems often struggle with broad knowledge domains, like medicine, where deep expertise is required in multiple sub-fields (e.g., Cardiology vs. Endocrinology). Multi-Agent RAG solves this by creating a team of specialists.

Architecture

A typical setup involves:

  1. Lead Agent (Orchestrator): Receives the user query and delegates it to the correct expert(s).
  2. Expert Agents: Specialized agents with their own dedicated vector stores (e.g., a "Diabetes Expert" with access to diabetes research papers).
  3. Tool-Based Communication: Agents interact via defined tool signatures.
class MultiAgentSystem(dspy.Module):
    def __init__(self):
        self.lead_agent = dspy.ReAct(
            signature=MedicalSignature,
            tools=[consult_diabetes_expert, consult_cardio_expert]
        )
        
    def forward(self, question):
        return self.lead_agent(question=question)

Optimization with GEPA

We can optimize this entire system using GEPA (Generative Evolving Prompt Architecture). This advanced optimizer uses a "Teacher" LLM to critique the performance of individual agents (Student LLMs) and iteratively refine their instructions, leading to significant performance gains (+8% accuracy in medical benchmarks).