NumPy allowed · plain Python earns 10 bonus points
Cosine-like similarity scores ranked before context assembly
Implement Average Precision@K for one user, the per-query building block of the MAP@K metric used to evaluate recommendation ranking quality.
Implement average_precision_at_k(ranked_items, relevant_items, k). Walk ranked_items[:k] in order; every time you hit a relevant item, compute precision-so-far (hits found / position, 1-indexed) and record it. Return the average of those recorded precision values, or 0.0 if no relevant item was found in the top k.
average_precision_at_k(ranked_items: list[str], relevant_items: set, k: int) -> float