Rerankers¶
Re-score retrieved documents to improve ranking quality.
Available Rerankers¶
API-based¶
| Reranker | Type | Provider |
|---|---|---|
| Cohere | API | Cohere |
| Jina | API | Jina AI |
| VoyageAI | API | Voyage AI |
| MixedbreadAI | API | Mixedbread AI |
| RankGPT | LLM | Any LLM |
| UPR | LLM | Any LLM |
| FlagEmbedding LLM | LLM-based | BAAI |
Local Models¶
| Reranker | Type | Library |
|---|---|---|
| SentenceTransformer | CrossEncoder | sentence-transformers |
| FlagEmbedding | CrossEncoder | FlagEmbedding |
| FlashRank | ONNX | flashrank |
| ColBERT | Token-level | torch, transformers |
| MonoT5 | Seq2Seq | torch, transformers |
| TART | Instruction-T5 | torch, transformers |
| KoReranker | Korean | torch, transformers |
| OpenVINO | HW-optimized | optimum-intel |
Installation¶
API rerankers require optional dependencies:
pip install autorag-research[reranker]
GPU/local rerankers require the gpu extra:
pip install autorag-research[gpu]
OpenVINO reranker requires:
pip install autorag-research[openvino]
Base Class¶
All rerankers extend BaseReranker:
from autorag_research.rerankers import BaseReranker, RerankResult
class MyReranker(BaseReranker):
def rerank(self, query: str, documents: list[str], top_k: int | None = None) -> list[RerankResult]:
# Return sorted results by relevance
pass
async def arerank(self, query: str, documents: list[str], top_k: int | None = None) -> list[RerankResult]:
# Async version
pass
Methods¶
| Method | Description |
|---|---|
rerank(query, docs, top_k) |
Single query reranking |
arerank(query, docs, top_k) |
Async single query |
rerank_documents(queries, docs_list, top_k) |
Batch reranking |
arerank_documents(queries, docs_list, top_k) |
Async batch |
Usage with Injection¶
from autorag_research.injection import load_reranker, with_reranker
# Load from config
reranker = load_reranker("cohere")
# Or use decorator
@with_reranker()
def my_func(reranker):
return reranker.rerank("query", ["doc1", "doc2"])