rohitg00/ai-engineering-from-scratch · error · ValueError
retrieved_per_query and gold_per_query must have the same le
Error message
retrieved_per_query and gold_per_query must have the same length ({len(retrieved_per_query)} vs {len(gold_per_query)}) What it means
Error "retrieved_per_query and gold_per_query must have the same length ({len(retrieved_per_query)} vs {len(gold_per_query)})" thrown in rohitg00/ai-engineering-from-scratch.
Source
Thrown at phases/19-capstone-projects/68-rag-eval-precision-recall/code/main.py:65
def recall_at_k(retrieved: list[str], gold: set[str], k: int) -> float:
if not gold:
return 0.0
top = set(retrieved[:k])
return len(top & gold) / len(gold)
def reciprocal_rank(retrieved: list[str], gold: set[str]) -> float:
for i, doc_id in enumerate(retrieved):
if doc_id in gold:
return 1.0 / (i + 1)
return 0.0
def mean_reciprocal_rank(retrieved_per_query: list[list[str]],
gold_per_query: list[set[str]]) -> float:
if len(retrieved_per_query) != len(gold_per_query):
raise ValueError(
f"retrieved_per_query and gold_per_query must have the same length "
f"({len(retrieved_per_query)} vs {len(gold_per_query)})"
)
if not retrieved_per_query:
return 0.0
return sum(reciprocal_rank(r, g) for r, g in zip(retrieved_per_query, gold_per_query)) / len(retrieved_per_query)
def dcg_at_k(retrieved: list[str], graded: dict[str, int], k: int) -> float:
s = 0.0
for i, doc_id in enumerate(retrieved[:k]):
rel = graded.get(doc_id, 0)
if rel <= 0:
continue
s += ((2 ** rel) - 1) / math.log2(i + 2)
return s
View on GitHub (pinned to 39ea8a1c6d)
When it happens
Trigger: Thrown at phases/19-capstone-projects/68-rag-eval-precision-recall/code/main.py:65 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26).
Data as JSON: /api/errors/bc941aa2bb0b942c.
Report an issue: GitHub.