Emretheus

Systems · case study

Jev RAG Benchmark

Does TypeSafe's Jev 1.13 improve a RAG pipeline? I built a free, English benchmark to find out — with frozen candidate pools, calibrated probabilities, and the runs where the hypothesis lost. This is the study of its decisions, not a feature tour.

evaluation · retrieval · LLM systems Repository ↗ Preregistered protocol ↗ Live leaderboard ↗ Raw artifacts ↗

Jev 1.13 returns typed decisions with calibrated probabilities instead of text — a natural fit for one of RAG's quietest jobs: deciding which retrieved passages deserve to reach the model, and when it is safe to skip a generation call entirely. The benchmark puts Jev, a trained NVIDIA cross-encoder and the unranked hybrid order on identical frozen candidates, then asks a single question: does the model actually improve the system?

  1. D1

    A free stack, or a more reproducible one?

    Context
    A benchmark nobody can afford to re-run is a blog post. Reranking evaluations burn tokens on every method you compare.
    Options
    Paid APIs · local models on a laptop · free tiers of hosted models
    Chosen
    Free tiers only: Vercel AI Gateway for Jev 1.13, NVIDIA NIM for embeddings and the cross-encoder, Codiv for generation.
    Why
    Every published number can be reproduced by anyone with an account and no budget approval. The whole benchmark — 1,490 reranked queries across four methods — cost $0.
    The cost
    Model churn. Three NVIDIA models were retired mid-project and had to be replaced; each swap is recorded in the run manifest so results stay attributable.
  2. D2

    A RAG framework, or a harness of my own?

    Context
    Reranking comparisons are easy to run in LlamaIndex or LangChain — and easy to contaminate with their prompt wrappers, parsers and batching.
    Options
    Adopt a framework · build a thin harness · fork an existing benchmark
    Chosen
    A framework-neutral harness with three runtime dependencies.
    Why
    A benchmark should measure models, not wrappers. Fewer layers also means clean latency numbers — and latency is a headline claim for System One models.
    The cost
    The glue has to be written and tested: BM25, reciprocal rank fusion, metrics, calibration, export. That work is the repo.
  3. D3

    How to keep the comparison honest

    Context
    If retrieval re-runs between methods, a lucky or unlucky draw gets published as a model difference.
    Options
    Live retrieval per method · frozen candidate pools · frozen pools plus frozen contexts
    Chosen
    Freeze the top-20 candidates once, compare every reranker on that pool, then replay generation over one frozen top-5.
    Why
    Retrieval, reranking and generation effects are separated by construction. Paired bootstrap confidence intervals compare methods on identical queries.
    The cost
    The stages cannot adapt to each other. A real system could rerank the pool differently per query; the benchmark deliberately cannot.
  4. D4

    Publish the runs where the hypothesis loses

    Context
    Jev helps where the first stage leaves headroom. On XQuAD the baseline is already at 98.1% nDCG — and a trained cross-encoder still leads by 0.45 points.
    Options
    Report only the wins · report everything · report everything and label what came later
    Chosen
    Report everything, with a preregistered protocol and an explicit changelog that marks later analyses as exploratory.
    Why
    A benchmark's credibility comes from the runs where its hypothesis loses. 'No measurable difference' is a finding, not a failure.
    The cost
    The headline is less shiny, and later additions had to carry an honest 'exploratory' label instead of being framed as confirmatory.
  5. D5

    Always-on reranking, or confidence-gated decisions?

    Context
    Ranking every candidate by independent probabilities is noisy. The model's own calibration offered a different interface.
    Options
    Always-on reranking · all-or-nothing switching · confidence-partitioned decisions
    Chosen
    Keep candidates with p ≥ 0.5 in the model's order, fall back to the hybrid order for the rest; skip generation entirely when the top probability is low.
    Why
    The decision layer beat the unranked baseline on both datasets (+0.89 pts XQuAD, +4.14 pts SciFact), and answerability gating removed 9.8% of generation calls while raising answer F1.
    The cost
    A threshold must be chosen, documented and re-validated per domain. Gating is a policy, not a property of the model.

nDCG@10 on identical frozen top-20 candidates. A = no reranker (hybrid order), T = TypeSafe Jev 1.13 batch noul, N = NVIDIA cross-encoder.

Dataset n A · no reranker T · Jev 1.13 N · NVIDIA
xquad-en 1190 98.11% 98.93% 99.37%
scifact 300 71.67% 79.29% 78.70%
nDCG@10 by method with 95% confidence intervals for XQuAD-EN and SciFact
Reliability diagram: Jev mean confidence versus observed accuracy per probability bin

Decision models can also govern tool calls: which tool to use, whether a call may run without review, whether arguments are valid, and whether observed text tries to manipulate the assistant. Same deterministic cases for all three: Jev through the Vercel free tier, Laya (open weights) through its official Hugging Face demo Space, and a free generative LLM asked for the same decisions as JSON.

Task family (n = 40) Jev 1.13 Laya LLM baseline
Tool selection, 5 tools100%100%100%
Tool selection, 20 tools90%100%80%
Tool selection, 50 tools70%40%70%
Tool selection, 200 tools80%refused*80%
Call approval70%32.5%80%
Argument validation100%65%100%
Injection detection100%100%100%
Median decision latency1022 ms121 ms1018 ms
Tool selection accuracy by catalog size for Jev, Laya and an LLM baseline