Enterprise_RAG / src /reranker /cross_encoder.py
yuvis's picture
Upload folder using huggingface_hub
f4c70c8 verified
raw
history blame contribute delete
636 Bytes
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]