RAG_NLP / reranker.py
DenysPetro's picture
changed structure
2fa7106
from FlagEmbedding import FlagReranker
class Reranker:
def __init__(self, model_name='BAAI/bge-reranker-large'):
self.model = FlagReranker(model_name, use_fp16=True)
def rerank(self, query, retrieved_results, filter_num=1):
"""
Rerank the retrieved results based on query relevance.
Args:
query (str): Query string.
retrieved_results (list): List of chunks in text format.
Returns:
list: Reranked results as a list of chunks (sorted by relevance).
"""
if not retrieved_results:
return []
input_pairs = [(query, chunk) for chunk in retrieved_results]
scores = self.model.compute_score(input_pairs)
reranked_results = sorted(
zip(retrieved_results, scores),
key=lambda x: x[1],
reverse=True
)
reranked_chunks = [chunk for chunk, _ in reranked_results]
reranked_chunks = reranked_chunks[:filter_num]
return reranked_chunks