Spaces:
Paused
Paused
Download sensorflow/retro/rag/evalharness.py from whassan/SensorflowStudio: direct link, hf CLI and curl.
- Browser
- Download file 3.5 kB
-
https://huggingface.co/spaces/whassan/SensorflowStudio/resolve/main/sensorflow/retro/rag/evalharness.py
- Command line
-
hf download hf://spaces/whassan/SensorflowStudio/sensorflow/retro/rag/evalharness.py
-
curl -L -o evalharness.py https://huggingface.co/spaces/whassan/SensorflowStudio/resolve/main/sensorflow/retro/rag/evalharness.py
3.5 kB
| """Retrieval evaluation harness: query set with expected-source assertions. | |
| precision@k here means: fraction of queries whose expected doc_id appears in | |
| the top-k results (a.k.a. hit-rate@k / recall@k over one relevant document | |
| per query — reported explicitly so nobody mistakes it for a graded metric). | |
| """ | |
| from __future__ import annotations | |
| from typing import Dict, List, Optional | |
| from pydantic import BaseModel | |
| from sensorflow.retro.rag.retriever import SafetyCaseIndex, get_index | |
| # Each query names the doc that a correct retriever must surface. | |
| EVAL_QUERIES: List[Dict[str, str]] = [ | |
| {"query": "pedestrian missed inside stopping distance recall requirement", | |
| "expected_doc_id": "SFS-SAFE-001"}, | |
| {"query": "phantom braking limits for plastic bag road debris misclassification", | |
| "expected_doc_id": "SFS-SAFE-001"}, | |
| {"query": "launch gate CRITICAL severity unresolved scorecard PASS blocked", | |
| "expected_doc_id": "SFS-LAUNCH-004"}, | |
| {"query": "INSUFFICIENT_EVIDENCE can never become PASS", | |
| "expected_doc_id": "SFS-LAUNCH-004"}, | |
| {"query": "rain degradation pedestrian recall confidence threshold raising prohibited", | |
| "expected_doc_id": "SFS-PERC-002"}, | |
| {"query": "confidence calibration empirical precision rolling window", | |
| "expected_doc_id": "SFS-PERC-002"}, | |
| {"query": "urban ODD posted speed crosswalk envelope", | |
| "expected_doc_id": "SFS-ODD-003"}, | |
| {"query": "heavy rain outside ODD minimal-risk maneuver", | |
| "expected_doc_id": "SFS-ODD-003"}, | |
| {"query": "historical retrospective phantom brake mylar balloon deformable clutter", | |
| "expected_doc_id": "SFS-RETRO-HIST-01"}, | |
| {"query": "pedestrian dark clothing rain night fusion confidence below tracking threshold", | |
| "expected_doc_id": "SFS-RETRO-HIST-01"}, | |
| {"query": "safety-critical recall SCR denominator criticality context", | |
| "expected_doc_id": "SFS-EVAL-005"}, | |
| {"query": "asymmetric false negative false positive cost context dependent", | |
| "expected_doc_id": "SFS-EVAL-005"}, | |
| {"query": "SOTIF functional insufficiency performance limitation intended functionality", | |
| "expected_doc_id": "SOTIF-CONCEPTS-21448"}, | |
| {"query": "unknown hazardous scenarios triggering conditions discovery", | |
| "expected_doc_id": "SOTIF-CONCEPTS-21448"}, | |
| ] | |
| class QueryResult(BaseModel): | |
| query: str | |
| expected_doc_id: str | |
| hit_at_k: bool | |
| top_doc_ids: List[str] | |
| top_score: float | |
| class RetrievalEvalReport(BaseModel): | |
| k: int | |
| num_queries: int | |
| num_hits: int | |
| precision_at_k: float # hit-rate@k with one relevant doc per query | |
| store_backend: str | |
| results: List[QueryResult] | |
| def run_retrieval_eval(index: Optional[SafetyCaseIndex] = None, | |
| k: int = 4) -> RetrievalEvalReport: | |
| index = index or get_index() | |
| results: List[QueryResult] = [] | |
| hits = 0 | |
| for item in EVAL_QUERIES: | |
| found = index.search(item["query"], k=k) | |
| doc_ids = [f.doc_id for f in found] | |
| hit = item["expected_doc_id"] in doc_ids | |
| hits += int(hit) | |
| results.append(QueryResult( | |
| query=item["query"], expected_doc_id=item["expected_doc_id"], | |
| hit_at_k=hit, top_doc_ids=doc_ids, | |
| top_score=found[0].relevance_score if found else 0.0)) | |
| return RetrievalEvalReport( | |
| k=k, num_queries=len(EVAL_QUERIES), num_hits=hits, | |
| precision_at_k=round(hits / len(EVAL_QUERIES), 4), | |
| store_backend=index.backend_name, results=results) | |