SIARE - Self-Improving Agentic RAG Engine
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:
- Define your goals - accuracy, latency, cost, or custom metrics
- Let evolution work - SIARE mutates prompts, tools, and even agent topology
- Get diverse solutions - Quality-Diversity ensures you have multiple good options
- 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.
🤖 Hybrid Agentic Evolution
Three evolution modes to match your needs:
- Single-turn: Fast, cheap mutations via Diagnostician + Architect (default)
- Agentic: Multi-turn variation with tool access — the agent diagnoses, proposes, validates, and iterates
- Adaptive: Starts single-turn, automatically escalates to agentic when stagnation is detected
When evolution stalls, a SupervisorAgent analyzes the trajectory and redirects exploration toward unexplored territory.
🔌 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 | ✅ | ❌ | ❌ | ❌ |
| Agentic variation | ✅ | ❌ | ❌ | ❌ |
| Self-supervision | ✅ | ❌ | ❌ | ❌ |
| Multi-agent support | ✅ | Limited | ❌ | ✅ |
| Extensible hooks | ✅ | ❌ | ❌ | ✅ |
Examples
- Customer Support - Simple Q&A over documents
- Clinical Trials - Complex multi-agent research assistant
Documentation
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE for details.
Built with ❤️ by Synapti.ai
Metadata
Release files for siare 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| siare-1.2.0.tar.gz | 382.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| siare-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 843.9 kB
Release files / siare-1.2.0.tar.gz
| Download URL | siare-1.2.0.tar.gz |
|---|---|
| Size | 382.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e8022fc6448c0485f1ef0aef359360ef1225c1c15a36602125f8a4bbc27f9512
|
|
BLAKE2b-256 checksum How to use checksums |
ac27c13990c22db1798fd3e3527cb7a0b31c8b1eb9edddca145f8fb25be8aef2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.
Transparency logRelease files / siare-1.2.0-py3-none-any.whl
| Download URL | siare-1.2.0-py3-none-any.whl |
|---|---|
| Size | 461.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2f7a49286f1412a937cdd1506cbbc2b3ac7e38e947f40563daddd6a37b6d22c
|
|
BLAKE2b-256 checksum How to use checksums |
9ab4bd17289dd3dbcba519d63522b40143c8d10bb1dc75f3ec20087d10ae5b1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 28, 2026.
Transparency log