Skip to main content

Self-Improving Agentic RAG Engine - Evolve multi-agent RAG pipelines using Quality-Diversity optimization

Project description

SIARE - Self-Improving Agentic RAG Engine

PyPI version License: MIT Python 3.10+

Stop tuning RAG pipelines. Let them evolve.

SIARE is the first self-improving RAG engine that treats pipeline configuration as evolvable genetic material. Instead of manually tuning prompts, retrieval strategies, and agent topologies, SIARE uses Quality-Diversity optimization to automatically discover and maintain diverse high-performing multi-agent RAG strategies.

The Problem

Building RAG systems today means endless iteration:

  • Tweak prompts → benchmark → repeat
  • Try different chunking strategies → benchmark → repeat
  • Adjust retrieval parameters → benchmark → repeat
  • Add more agents → debug interactions → repeat

This process is expensive, brittle, and never-ending as your data and requirements change.

The Solution

SIARE treats your RAG pipeline as a living system that evolves:

  1. Define your goals - accuracy, latency, cost, or custom metrics
  2. Let evolution work - SIARE mutates prompts, tools, and even agent topology
  3. Get diverse solutions - Quality-Diversity ensures you have multiple good options
  4. Adapt continuously - As your data changes, your pipeline evolves

Quick Start

pip install siare

# Initialize a new project
siare init

# Run evolution (10 generations)
siare evolve

# Query your evolved pipeline
siare run "How do I reset my password?"

How It Works

┌─────────────────────────────────────────────────────────────────┐
│                      SIARE Evolution Loop                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
│  │  Execute │───▶│ Evaluate │───▶│ Diagnose │───▶│  Mutate  │  │
│  │   SOP    │    │  Metrics │    │ Weakness │    │   SOP    │  │
│  └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
│       ▲                                                │         │
│       │                                                │         │
│       └────────────────────────────────────────────────┘         │
│                                                                  │
│  Mutation Types:                                                 │
│  • PROMPT_CHANGE  - Evolve prompts based on failure patterns    │
│  • PARAM_TWEAK    - Adjust model parameters (temp, tokens)      │
│  • ADD_ROLE       - Add new agents to the pipeline              │
│  • REMOVE_ROLE    - Simplify by removing agents                 │
│  • REWIRE_GRAPH   - Change how agents connect and communicate   │
│  • CROSSOVER      - Combine successful strategies               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Key Features

🧬 Topology Evolution

Unlike prompt-only optimizers, SIARE can evolve the structure of your pipeline - adding, removing, and rewiring agents to find optimal architectures.

🎯 Quality-Diversity Optimization

Using MAP-Elites, SIARE maintains a diverse population of high-performing solutions. You don't just get one answer - you get a range of options trading off different metrics.

🔌 Extensible Hooks

Enterprise features integrate cleanly via hooks without modifying core code:

  • Audit logging
  • Usage billing
  • Approval gates
  • Custom metrics

📊 Built-in Benchmarks

Evaluate your pipelines against standard datasets:

  • HotpotQA (multi-hop reasoning)
  • Natural Questions
  • Custom evaluation suites

Installation

# Core package
pip install siare

# With LLM providers
pip install siare[llm]

# With embeddings support
pip install siare[embeddings]

# Everything
pip install siare[full]

Programmatic Usage

from siare import ProcessConfig, Role, GraphEdge
from siare.services import DirectorService, ExecutionEngine, GenePool

# Define your pipeline
config = ProcessConfig(
    name="customer-support",
    version="1.0.0",
    roles=[
        Role(
            name="retriever",
            model="gpt-4o-mini",
            system_prompt="Find relevant documents...",
            tools=["vector_search"],
        ),
        Role(
            name="answerer",
            model="gpt-4o-mini",
            system_prompt="Answer based on retrieved context...",
        ),
    ],
    graph=[
        GraphEdge(source="retriever", target="answerer"),
    ],
)

# Run evolution
director = DirectorService(llm_provider)
gene_pool = GenePool()

for generation in range(10):
    # Execute and evaluate
    trace = await engine.execute(config, task)
    evaluation = await evaluator.evaluate(trace)

    # Diagnose and mutate
    diagnosis = await director.diagnose(evaluation)
    mutated = await director.mutate_sop(config, diagnosis)

    # Track in gene pool
    gene_pool.add(mutated, evaluation)

# Get best solution
best = gene_pool.get_pareto_frontier()[0]

Why SIARE?

Feature SIARE DSPy AutoRAG LangChain
Prompt optimization
Parameter tuning
Topology evolution
Quality-Diversity
Multi-agent support Limited
Extensible hooks

Examples

Documentation

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE for details.


Built with ❤️ by Synapti.ai

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siare-1.0.0.tar.gz (333.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siare-1.0.0-py3-none-any.whl (402.2 kB view details)

Uploaded Python 3

File details

Details for the file siare-1.0.0.tar.gz.

File metadata

  • Download URL: siare-1.0.0.tar.gz
  • Upload date:
  • Size: 333.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for siare-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2b8e8fb5cf083b5fd1b5bd7f262254c7a9363a5c8acdb29626904f52859d7dd2
MD5 a291a4c93b10073ab4b169b8cc131ed7
BLAKE2b-256 506c94f1da5e31247ea83833702ac5ea601bac0dafd024d5e70a4f03d042f047

See more details on using hashes here.

Provenance

The following attestation bundles were made for siare-1.0.0.tar.gz:

Publisher: publish.yml on synaptiai/siare

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file siare-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: siare-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 402.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for siare-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 083043039ca422d460715fb784debf92854e753c7a7acfa74c3c8d8863dc3606
MD5 ce765ae7d4ace85119cab96ef16f5042
BLAKE2b-256 8e5836be816a0ee5896e55fa2de8cfefba3933012f9c681fa5913ba4c8d648e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for siare-1.0.0-py3-none-any.whl:

Publisher: publish.yml on synaptiai/siare

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page