Spaces:
Sleeping
Sleeping
| from sentence_transformers import CrossEncoder | |
| class Reranker: | |
| def __init__(self, model_name: str = "cross-encoder/ms-marco-MiniLM-L-6-v2"): | |
| self.model = CrossEncoder(model_name) | |
| def rerank(self, query: str, docs: list[str], top_k: int = 5): | |
| if not docs: | |
| return [] | |
| pairs = [[query, doc] for doc in docs] | |
| scores = self.model.predict(pairs).tolist() | |
| # Combine docs with scores | |
| doc_scores = list(zip(docs, scores)) | |
| # Sort by score descending | |
| doc_scores.sort(key=lambda x: x[1], reverse=True) | |
| return doc_scores[:top_k] | |