| from __future__ import annotations | |
| from typing import List, Tuple | |
| import numpy as np | |
| from src.embeddings.similarity import cosine_similarity | |
| def retrieve_top_k( | |
| query_emb: np.ndarray, | |
| candidates: List[Tuple[str, np.ndarray]], | |
| k: int = 5, | |
| ): | |
| scored = [(item_id, cosine_similarity(query_emb, emb)) for item_id, emb in candidates] | |
| scored.sort(key=lambda x: x[1], reverse=True) | |
| return scored[:k] | |