Eval Drift

March 6, 2026 · View on GitHub

🧭 Quick Return to Map

You are in a sub-page of RAG.
To reorient, go back here:

Think of this page as a desk within a ward.
If you need the full triage and all prescriptions, return to the Emergency Room lobby.

Evaluation disclaimer (RAG drift)
Drift signals here are measured inside specific RAG pipelines and datasets.
They are debugging indicators, not proof that a system will stay stable in all real workloads.


When evaluation metrics swing unpredictably across runs (precision, recall, ΔS, coverage) even though the data and index appear unchanged.
This signals eval drift: your evaluation harness is not structurally stable.


Open these first


Core acceptance

  • ΔS(question, retrieved) ≤ 0.45 across 3 paraphrases
  • Coverage ≥ 0.70 per target section
  • λ convergent on 2 seeds, stable across runs
  • Variance of metrics ≤ 0.05 across replays

Typical symptoms → exact fix

SymptomLikely causeOpen this
Precision/recall varies ±0.20 each runeval harness non-deterministicEval Precision/Recall
Identical queries give different metricsbootstrap not fencedBootstrap Ordering
Eval metrics collapse on fresh deployindex not fully warmedPredeploy Collapse
Coverage < 0.50 despite gold answersembedding or chunk driftEmbedding ≠ Semantic, Chunking Checklist

Fix in 60 seconds

  1. Lock seeds
    Fix random seeds at retrieval, reranker, and eval harness layers.

  2. Fence bootstrap
    Require VECTOR_READY==true and index hash match before eval begins.

  3. Replay 3 paraphrases
    Eval the same question with 3 paraphrases. Require ΔS variance < 0.05.

  4. Cross-seed check
    Run two seeds. λ must remain convergent across both.

  5. Regression gate
    Ship only if coverage ≥ 0.70 and precision/recall stable within 0.05.


Copy-paste eval harness snippet

def eval_guardrails(question, retrieved, gold):
    ds_qr = deltaS(question, retrieved)
    ds_rg = deltaS(retrieved, gold)

    assert ds_qr <= 0.45, "ΔS drift detected"
    assert coverage(retrieved, gold) >= 0.70, "Coverage too low"
    assert lambda_state(retrieved) in {"→","←","<>"} , "λ divergent"

    return {
        "ΔS_qr": ds_qr,
        "ΔS_rg": ds_rg,
        "coverage": coverage(retrieved, gold),
        "λ": lambda_state(retrieved)
    }

Diagnostic probes

  • Re-run variance test: run eval 5 times, log precision/recall. Stddev >0.05 → unstable harness.
  • Anchor comparison: compare ΔS to gold anchor vs decoy. If both similar, re-embed.
  • Deploy warm-up: log VECTOR_READY and index hash before eval.

🔗 Quick-Start Downloads (60 sec)

ToolLink3-Step Setup
WFGY 1.0 PDFEngine Paper1️⃣ Download · 2️⃣ Upload to your LLM · 3️⃣ Ask “Answer using WFGY +
TXT OS (plain-text OS)TXTOS.txt1️⃣ Download · 2️⃣ Paste into any LLM chat · 3️⃣ Type “hello world” — OS boots instantly

Explore More

LayerPageWhat it’s for
⭐ ProofWFGY Recognition MapExternal citations, integrations, and ecosystem proof
⚙️ EngineWFGY 1.0Original PDF tension engine and early logic sketch (legacy reference)
⚙️ EngineWFGY 2.0Production tension kernel for RAG and agent systems
⚙️ EngineWFGY 3.0TXT based Singularity tension engine (131 S class set)
🗺️ MapProblem Map 1.0Flagship 16 problem RAG failure taxonomy and fix map
🗺️ MapProblem Map 2.0Global Debug Card for RAG and agent pipeline diagnosis
🗺️ MapProblem Map 3.0Global AI troubleshooting atlas and failure pattern map
🧰 AppTXT OS.txt semantic OS with fast bootstrap
🧰 AppBlah Blah BlahAbstract and paradox Q&A built on TXT OS
🧰 AppBlur Blur BlurText to image generation with semantic control
🏡 OnboardingStarter VillageGuided entry point for new users

If this repository helped, starring it improves discovery so more builders can find the docs and tools.
GitHub Repo stars