Skip to content

TunaRAG Component Map

Component Responsibility Status
Domain and serialization Immutable values, redaction, canonical identity Implemented
Configuration and errors Typed precedence, validation, stable redacted failures Implemented
Search space and RandomSearch Typed sampling and seeded suggestions Implemented
Objectives and stopping Weighted score; trial, cost, time, target, stagnation, failure rules Implemented
SQLite experiment store Lifecycle, attempts, observations, events, migration/recovery Implemented
Cache Versioned reusable results, expiry, privacy, checksums, quarantine Implemented
Retry policy Retry classification, capped backoff, sample/trial deadlines Implemented
Optimizer and trial runner Bounded trial/sample concurrency, retries, cache, resume, isolation Implemented
LLMSearch Provider-neutral bounded suggestions, validation, deterministic fallback Implemented
Evaluators Custom metric helper and optional lazy RAGAS integration Implemented
Evaluation datasets Canonical examples, JSON/JSONL/CSV ingestion, hashes, splits Implemented
Synthetic generation Provider-neutral bounded QA generation with spans/provenance/usage Implemented
Events and callbacks Durable ordered events and isolated post-commit async dispatch Implemented
Results and reporting Ranking, metric leaders, usage summaries, JSON/CSV exports Implemented
MLflow mirror Optional best-effort post-commit tracking callback Implemented
Framework runnable adapters First-party LangChain runnable and compiled LangGraph bridges Implemented in V0.2
Reference RAG example Deterministic local adapter, evaluator, dataset, optimization, exports Implemented

Dependencies flow inward from entry points and integrations toward protocols and immutable domain values. The user owns retrieval and generation through official framework adapters. RAGAS, MLflow, provider SDKs and LlamaIndex never become core dependencies. LangChain and LangGraph remain optional extras behind structural runnable adapters. The reference RAG in examples/ demonstrates that boundary and is not shipped as package runtime code.