reranker.py 716 B

123456789101112131415161718192021222324252627282930
  1. """
  2. BGE-Reranker-v2-m3 重排序
  3. Cross-Encoder 精排,将 Top-20 精准压缩到 Top-5
  4. """
  5. from typing import Optional
  6. from app.core.config import get_settings
  7. settings = get_settings()
  8. class Reranker:
  9. def __init__(self, model_name: Optional[str] = None):
  10. self.model_name = model_name or settings.reranker_model
  11. self._model = None
  12. def _load_model(self):
  13. pass
  14. def rerank(
  15. self,
  16. query: str,
  17. documents: list[dict],
  18. top_k: int = 5,
  19. ) -> list[dict]:
  20. if not documents:
  21. return []
  22. sorted_docs = sorted(
  23. documents, key=lambda d: d.get("score", 0), reverse=True
  24. )
  25. return sorted_docs[:top_k]