from praisonaiagents.knowledge.rerankers import (
RerankResult,
get_reranker_registry
)
from typing import List, Optional
class MyReranker:
name = "my_reranker"
def rerank(
self,
query: str,
documents: List[str],
top_k: Optional[int] = None,
**kwargs
) -> List[RerankResult]:
# Custom scoring logic
scored = []
for i, doc in enumerate(documents):
score = self._compute_score(query, doc)
scored.append(RerankResult(
text=doc,
score=score,
original_index=i
))
# Sort by score descending
scored.sort(key=lambda x: x.score, reverse=True)
if top_k:
scored = scored[:top_k]
return scored
def _compute_score(self, query: str, doc: str) -> float:
# Your scoring logic
...
# Register
registry = get_reranker_registry()
registry.register("my_reranker", MyReranker)