{
  "license": "CC BY 4.0",
  "recipe": {
    "slug": "rag-retrieval-quality-by-version",
    "title": "Evaluate RAG Retrieval Quality by Version",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "rag_evaluation_events",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "Evaluation completion time in UTC."
      },
      {
        "name": "pipeline_version",
        "type": "Utf8",
        "description": "Versioned retriever, index, and prompt configuration."
      },
      {
        "name": "test_case_id",
        "type": "Utf8",
        "description": "Stable evaluation-case identifier."
      },
      {
        "name": "relevant_document_retrieved",
        "type": "Boolean",
        "description": "Reviewed retrieval relevance outcome."
      },
      {
        "name": "answer_grounded",
        "type": "Boolean",
        "description": "Reviewed grounded-answer outcome."
      },
      {
        "name": "retrieval_latency_ms",
        "type": "Int64",
        "description": "Retrieval-stage latency in milliseconds."
      },
      {
        "name": "cost_usd",
        "type": "Float64",
        "description": "Versioned estimated evaluation cost in USD."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Evaluation or production environment."
      }
    ]
  },
  "query": "SELECT\n  pipeline_version,\n  COUNT(*) AS test_cases,\n  100.0 * SUM(CASE WHEN relevant_document_retrieved THEN 1 ELSE 0 END)\n    / NULLIF(COUNT(*), 0) AS retrieval_relevance_pct,\n  100.0 * SUM(CASE WHEN answer_grounded THEN 1 ELSE 0 END)\n    / NULLIF(COUNT(*), 0) AS grounded_answer_pct,\n  AVG(retrieval_latency_ms) AS avg_retrieval_latency_ms,\n  SUM(cost_usd) AS evaluation_cost_usd\nFROM rag_evaluation_events\nWHERE timestamp_utc >= now() - INTERVAL '30 days'\n  AND environment = 'evaluation'\nGROUP BY pipeline_version\nORDER BY grounded_answer_pct DESC, retrieval_relevance_pct DESC, pipeline_version;",
  "fixtureKind": "reproducible",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-1",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 80,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-2",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 90,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-3",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 100,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-4",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 110,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:40:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-1",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 100,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:39:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-2",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 110,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:38:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-3",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 130,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:37:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-4",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 140,
      "cost_usd": 0.01,
      "environment": "evaluation"
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-1",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 80,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:59:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-2",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 90,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:58:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-3",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 100,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:57:00.000Z",
      "pipeline_version": "rag-v2",
      "test_case_id": "case-4",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 110,
      "cost_usd": 0.012,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:40:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-1",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 100,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:39:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-2",
      "relevant_document_retrieved": true,
      "answer_grounded": true,
      "retrieval_latency_ms": 110,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:38:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-3",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 130,
      "cost_usd": 0.01,
      "environment": "evaluation"
    },
    {
      "timestamp_utc": "2026-07-28T17:37:00.000Z",
      "pipeline_version": "rag-v1",
      "test_case_id": "case-4",
      "relevant_document_retrieved": false,
      "answer_grounded": false,
      "retrieval_latency_ms": 140,
      "cost_usd": 0.01,
      "environment": "evaluation"
    }
  ],
  "expectedOutput": {
    "columns": [
      "pipeline_version",
      "test_cases",
      "retrieval_relevance_pct",
      "grounded_answer_pct",
      "avg_retrieval_latency_ms",
      "evaluation_cost_usd"
    ],
    "rows": [
      {
        "pipeline_version": "rag-v2",
        "test_cases": 4,
        "retrieval_relevance_pct": 75,
        "grounded_answer_pct": 75,
        "avg_retrieval_latency_ms": 95,
        "evaluation_cost_usd": 0.048
      },
      {
        "pipeline_version": "rag-v1",
        "test_cases": 4,
        "retrieval_relevance_pct": 50,
        "grounded_answer_pct": 50,
        "avg_retrieval_latency_ms": 120,
        "evaluation_cost_usd": 0.04
      }
    ]
  },
  "notes": [
    "The included synthetic input rows generate the expected output when timestamps are shifted into the documented query window.",
    "Run this fixture in the public browser SQL playground; the selected query executes locally with DuckDB-Wasm.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}