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.