""" BGE-Reranker-v2-m3 重排序 Cross-Encoder 精排,将 Top-20 精准压缩到 Top-5 """ from typing import Optional from app.core.config import get_settings settings = get_settings() class Reranker: def __init__(self, model_name: Optional[str] = None): self.model_name = model_name or settings.reranker_model self._model = None def _load_model(self): pass def rerank( self, query: str, documents: list[dict], top_k: int = 5, ) -> list[dict]: if not documents: return [] sorted_docs = sorted( documents, key=lambda d: d.get("score", 0), reverse=True ) return sorted_docs[:top_k]