NumPy allowed · plain Python earns 10 bonus points
Cosine-like similarity scores ranked before context assembly
Implement Recall@K for the retrieval stage specifically, evaluating whether the retriever found the known-relevant documents at all (a prerequisite for the generator to ever use them).
Implement retrieval_recall_at_k(retrieved_ids, relevant_ids, k). Return |set(retrieved_ids[:k]) intersect relevant_ids| / len(relevant_ids). Return 0.0 if relevant_ids is empty.
retrieval_recall_at_k(retrieved_ids: list[str], relevant_ids: set, k: int) -> float