Skip to content

📃 Listwise Re-Ranking (RankT5, LiT5, Transformer Rankers)

Listwise rerankers consider the entire document list simultaneously.

RankT5

RankT5 generates rankings for document lists:

from rankify.dataset.dataset import Document, Question, Context
from rankify.models.reranking import Reranking

question = Question("What is machine learning?")
contexts = [
    Context(text="Machine learning is a subset of artificial intelligence.", id="1"),
    Context(text="Deep learning uses neural networks with many layers.", id="2"),
    Context(text="The weather forecast predicts rain tomorrow.", id="3"),
]
document = Document(question=question, contexts=contexts)

reranker = Reranking(method="rankt5", model_name="rankt5-base")
reranked = reranker.rank([document])

Available RankT5 Models

Model Size
rankt5-base 220M
rankt5-large 770M
rankt5-3b 3B

ListT5

ListT5 is optimized for listwise ranking:

reranker = Reranking(method="listt5", model_name="listt5-base")
reranked = reranker.rank([document])

Available ListT5 Models

Model Size
listt5-base 220M
listt5-3b 3B

LiT5 (Lightweight T5)

LiT5 offers fast listwise reranking:

# Score-based LiT5
reranker = Reranking(method="lit5score", model_name="LiT5-Score-base")
reranked = reranker.rank([document])

# Distilled LiT5
reranker = Reranking(method="lit5dist", model_name="LiT5-Distill-base")
reranked = reranker.rank([document])

vLLM Required

LiT5 models require vLLM: pip install "rankify[reranking]"

Transformer Reranker (Cross-Encoders)

Cross-encoder models for high-quality reranking:

# MixedBread rerankers
reranker = Reranking(
    method="transformer_ranker",
    model_name="mxbai-rerank-large"
)
reranked = reranker.rank([document])

# BGE rerankers
reranker = Reranking(
    method="transformer_ranker",
    model_name="bge-reranker-large"
)

# Jina rerankers
reranker = Reranking(
    method="transformer_ranker",
    model_name="jina-reranker-base-multilingual"
)

Available Transformer Models

Model Language Quality
mxbai-rerank-xsmall English Good
mxbai-rerank-base English Very Good
mxbai-rerank-large English Excellent
bge-reranker-base English Very Good
bge-reranker-large English Excellent
bge-reranker-v2-m3 Multilingual Excellent
jina-reranker-v1-tiny-en English Good
jina-reranker-v2-base-multilingual Multilingual Very Good

ColBERT Reranker

Late interaction reranking with ColBERT:

reranker = Reranking(method="colbert_ranker", model_name="colbertv2.0")
reranked = reranker.rank([document])

ColBERT Variants

Model Language
colbertv2.0 English
FranchColBERT French
JapanColBERT Japanese
SpanishColBERT Spanish
ArabicColBERT-250k Arabic

TwoLAR

Two-stage listwise reranker:

reranker = Reranking(method="twolar", model_name="twolar-large")
reranked = reranker.rank([document])

Comparison

Method Speed Quality List Size
RankT5 Medium Very Good Up to 100
ListT5 Medium Very Good Up to 100
LiT5 Fast Good Up to 100
Transformer Fast Excellent Unlimited
ColBERT Medium Excellent Unlimited

Next Steps