RAGeval
Drop-in LLMOps observability. Self-hosted. SQLite-default. Persona-aware. Multi-judge consensus.
Version: v0.1.18 | pip install omnismart-rageval
🔗 Live dashboard: https://rageval.ysiddo-ai-projects.app/ · browser dashboard (score a query + view metrics). Also fully scriptable — API:
/health,/eval/*viacurl/HTTPie. On-demand backend (first request ~30–60 s to wake). Self-hosting: see SELF_HOSTING.md.
The 60-Second Pitch
from rageval import track
@track(model="anthropic/claude-sonnet-4-6", persona="cfo")
async def answer_question(query: str, context_chunks: list[str]) -> str:
...
That's it. Open the dashboard at localhost:8003.
What It Measures
| Metric | Definition |
|---|---|
| Retrieval relevance | Cosine sim between query and retrieved chunks (BGE-large by default) |
| Groundedness consensus | Multi-judge LLM scoring across your configured JUDGE_MODELS (min. 2 — no single-judge fallback), flags disagreement |
| Faithfulness | Per-sentence max-similarity to any chunk (NLI proxy) |
| Cost | USD per interaction, tracked by model |
| Latency | End-to-end wall-clock |
Comparison vs Alternatives
| Feature | RAGeval | Phoenix | Langfuse | TruLens |
|---|---|---|---|---|
| Self-hosted | ✅ | ✅ | ✅ | ✅ |
| SQLite default | ✅ | ❌ | ❌ | ❌ |
| Drop-in decorator | ✅ | partial | ❌ | partial |
| Persona-aware | ✅ | ❌ | ❌ | ❌ |
| Multi-judge consensus | ✅ | ❌ | ❌ | ❌ |
| Cost tracking | ✅ | ✅ | ✅ | partial |
| Setup time | 60 sec | 10 min | 15 min | 10 min |
Quick Start
pip install omnismart-rageval # v0.1.18 — distribution name; CLI + import remain `rageval`
rageval init # creates ~/.rageval/rageval.db
rageval serve --port 8003
Integration
FastAPI
from rageval import track
@app.post("/ask")
@track(model="anthropic/claude-sonnet-4-6", persona="cfo")
async def ask(query: str):
chunks = await retriever.search(query)
return await llm.generate(query, chunks=chunks)
LangChain
@track(model="groq/llama-3.3-70b-versatile")
def chain_invoke(query: str, context_chunks: list[str]):
return chain.invoke({"query": query, "context": context_chunks})
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /health | Liveness |
| POST | /eval/log | Score + store |
| POST | /eval/score | Score only (no storage) |
| GET | /eval/metrics?days=7 | Aggregate dashboard data |
| GET | /eval/queries | Query log (filter by needs_review) |
| GET | /eval/cost-report?days=30 | Cost breakdown by day + model |
| GET | /eval/alerts | Recent flagged queries |
| POST | /eval/retrieval-bench | A/B compare retrieval strategies |
| POST | /eval/embedding-comparison | Compare embedding models |
Tests
50 test functions across smoke, API, evaluator, decorator, DSPy integration, store, and e2e:
pytest tests/ -q
License
AGPL-3.0
⚖️ License & Enterprise Use (Dual-License)
This project is open-source under the AGPL-3.0 License. It is completely free for researchers, students, and open-source hobbyists.
Commercial Use: The AGPLv3 license requires that any proprietary network service (SaaS, internal corporate tools) that uses or modifies this code must also open-source its entire backend.
If you wish to use this framework in a closed-source commercial environment, or require Enterprise features (SSO, Active Directory, Custom VPC Deployment, Strict RBAC), you must obtain a Commercial License. Please reach out to discuss commercial licensing and integration consulting.
📡 Anonymous Telemetry
This project collects anonymous, GDPR-compliant startup pings to help the author understand usage volume and prioritize development.
- What is collected: A startup event timestamp and anonymized deployment origin. No API keys, no user prompts, and no sensitive application data is ever collected.
- How to disable: We respect your privacy and development environment. To opt-out, simply set
TELEMETRY_OPT_OUT=truein your.envfile.
Licensing
This project is licensed under the AGPL-3.0 License.
Commercial Use: If you wish to use this software commercially without releasing your own source code, please see COMMERCIAL.md to obtain a commercial license.
Telemetry: See TELEMETRY.md for our privacy-first data practices.
Metadata
Release files for omnismart-rageval 0.1.22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omnismart_rageval-0.1.22.tar.gz | 45.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| omnismart_rageval-0.1.22-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.5 kB
Release files / omnismart_rageval-0.1.22.tar.gz
| Download URL | omnismart_rageval-0.1.22.tar.gz |
|---|---|
| Size | 45.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fd9281316cb13782bfc828dd14a804529ef16c9bffa38840e41af558e841c93
|
|
BLAKE2b-256 checksum How to use checksums |
010cb109764a7049dcba94ae7bb3e6c5af2ab98175c4f1b013d0f52b5a33af58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / omnismart_rageval-0.1.22-py3-none-any.whl
| Download URL | omnismart_rageval-0.1.22-py3-none-any.whl |
|---|---|
| Size | 36.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5103db924f3de8742677ed5827940c9ebd698f1403cc4fcb95d7fb20334f8a56
|
|
BLAKE2b-256 checksum How to use checksums |
ee7d1826d63dac75e2d4112a7d6dafaa612d742dce8c9209b122f1e19b70cec8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|