Skip to main content

RAGeval

CI PyPI License: AGPL v3 Live App Research Benchmarks Guide

Self-hosted LLMOps observability for RAG pipelines, with multi-judge consensus scoring, persona-scope detection, and a drop-in Python decorator.

pip install omnismart-rageval

Live application: rageval.ysiddo-ai-projects.app. Score queries and inspect consensus telemetry as it arrives.

Overview

from rageval import track

@track(model="anthropic/claude-sonnet-4-6", persona="cfo")
async def answer_question(query: str, context_chunks: list[str]) -> str:
    ...

Instrumenting a RAG pipeline requires adding this decorator; the dashboard at localhost:8003 then reports groundedness, faithfulness, retrieval relevance, cost, and latency for every call.

What It Measures

Metric Definition
Retrieval relevance Cosine similarity between query and retrieved chunks (BGE-large by default)
Groundedness consensus Multi-judge LLM scoring across a configured judge panel (minimum two judges; no single-judge fallback), with disagreement flagged for review
Faithfulness Per-sentence maximum similarity to any retrieved chunk (an NLI proxy)
Cost USD per interaction, tracked by model
Latency End-to-end wall-clock time

The reasoning behind an LLM-judge, multi-judge-consensus design is in RESEARCH.md; measured accuracy against a hallucination-detection benchmark is in eval/JUDGE_BENCHMARK.md.

Comparison

Feature RAGeval Phoenix Langfuse TruLens
Self-hosted Yes Yes Yes Yes
SQLite by default Yes No No No
Drop-in decorator Yes Partial No Partial
Persona-scope detection Yes No No No
Multi-judge consensus Yes No No No
Cost tracking Yes Yes Yes Partial

Based on each project's public documentation as of 2026; feature sets in this space change quickly and are worth re-checking independently.

Quick Start

pip install omnismart-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/openai/gpt-oss-120b")
def chain_invoke(query: str, context_chunks: list[str]):
    return chain.invoke({"query": query, "context": context_chunks})

Endpoints

Method Path Purpose
GET /health Liveness check
GET /ready Readiness: 503 warming_up until the embedding backend is loaded, 503 database_unavailable until the store answers a query
POST /eval/log Score and persist an interaction
POST /eval/score Score only, without persisting
GET /eval/metrics?days=7 Aggregate dashboard data
GET /eval/queries Query log, filterable by review status
GET /eval/cost-report?days=30 Cost breakdown by day and model
GET /eval/alerts Recently flagged queries
GET /eval/events Evaluation-pipeline event log
GET /eval/config Current judge, embedding, and threshold configuration
POST /eval/retrieval-bench Compare retrieval strategies against a fixed eval set
POST /eval/embedding-comparison Compare embedding models on the same eval set
WS /eval/live Real-time event feed

Full request/response schemas are documented on the dashboard's built-in API Docs page (/api-docs).

The API rejects request bodies larger than 1 MiB by default. Evaluation and comparison requests are also bounded to 10 queries, 20 chunks per query, 4,000 characters per text, and 200,000 total input characters. At most two expensive evaluation requests run at once per process by default; saturated requests receive HTTP 503 with Retry-After: 2. Tune RAGEVAL_MAX_REQUEST_BODY_BYTES and RAGEVAL_MAX_CONCURRENT_EVALUATIONS for the memory and CPU budget of the deployment. Provider calls use JUDGE_TIMEOUT (default 90 seconds, maximum 300) and remote embeddings use EMBED_TIMEOUT (default 30 seconds, maximum 120).

The API initializes and migrates its schema before serving requests. A failed schema bootstrap aborts startup rather than leaving a partially usable service; /health remains a liveness probe and /ready verifies that the embedding backend is warm and the database is available.

Tests

100+ test functions across smoke, API, evaluator, decorator, DSPy integration, storage, and end-to-end paths:

pytest tests/ -q

Support the project

If RAGeval is useful to you, a star on the repository helps other engineers find it, and following @Yacine-ai-tech is the simplest way to hear about new releases. Passing the link to a colleague who has the same problem is just as welcome.

Questions and field notes go to Discussions; reproducible bugs go to Issues.

License

Open-source under the AGPL-3.0 License, free for researchers, students, and open-source use. AGPLv3 requires that any proprietary network service built on modified RAGeval code also open-source its backend. A commercial license for closed-source use or enterprise features such as SSO and custom RBAC is available: see COMMERCIAL.md.

Anonymous Telemetry

On startup RAGeval sends one small ping, at most once every 30 seconds per instance, that contains the service name, the event name (startup), the version string and a randomly generated install identifier that is not derived from any hardware identifier. It never contains API keys, prompts, judge scores or application data. The receiving endpoint sees the request's network metadata, as any HTTP server does.

The ping is on by default and fires once when the API server starts or, for library use, on the first interaction logged in a process. TELEMETRY_URL redirects it to an endpoint you operate (an empty value means the default); TELEMETRY_OPT_OUT=true or DO_NOT_TRACK=1 disables it.

views

Metadata

Release files for omnismart-rageval 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omnismart-rageval 0.2.3
File Size Uploaded
omnismart_rageval-0.2.3.tar.gz 63.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omnismart-rageval 0.2.3
File Interpreter ABI Platform
omnismart_rageval-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 112.7 kB

Release files / omnismart_rageval-0.2.3.tar.gz

Download URL omnismart_rageval-0.2.3.tar.gz
Size 63.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7c8a014488cdbb4c08ed051e861ef471f0c9b8ea88688ca58a3d5fceb72ea100
BLAKE2b-256 checksum
How to use checksums
f8ba9afc2e85899296c975fb3180358d602242becbb62267221268c99bd8a04a
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.2.3-py3-none-any.whl

Download URL omnismart_rageval-0.2.3-py3-none-any.whl
Size 49.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
103889ab8e78a88932769d562d6874c5f87d2a5e6db20a46787227f33ee15003
BLAKE2b-256 checksum
How to use checksums
58318f51aeca4d4dcc44f1e56795b5a51e965ec8ea6d4b67a4c34a77e921e852
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page