Spaces:
Sleeping
Sleeping
File size: 802 Bytes
d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 d82f721 1f71bd2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | """Reranker for the UI GreenMetric RAG system.
BGE V2-M3 cross-encoder. Opt-in via RAG_RERANK=1.
"""
from FlagEmbedding import FlagReranker
_reranker: FlagReranker | None = None
def _get_model() -> FlagReranker:
global _reranker
if _reranker is None:
_reranker = FlagReranker("BAAI/bge-reranker-v2-m3", use_fp16=True)
return _reranker
def rerank(
query: str,
chunks: list[dict],
*,
top_n: int = 7,
) -> list[dict]:
if not chunks:
return []
model = _get_model()
pairs = [[query, chunk["content"]] for chunk in chunks]
scores = model.compute_score(pairs)
for chunk, score in zip(chunks, scores):
chunk["rerank_score"] = float(score)
chunks.sort(key=lambda c: c["rerank_score"], reverse=True)
return chunks[:top_n]
|