reranking

A second-stage ranking pass over initially retrieved documents using a more accurate (but slower) cross-encoder model to improve result relevance before generation.

Syntax

rag
candidates = vector_search(query, k=20)
reranked = cross_encoder.rerank(query, candidates, top_k=3)

Example

rag
# Reranking with cross-encoder:
from sentence_transformers import CrossEncoder

reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")

# Score query-doc pairs:
pairs = [(query, doc) for doc in initial_results]
scores = reranker.predict(pairs)

# Sort by reranker score:
reranked = sorted(
    zip(scores, initial_results),
    reverse=True
)[:3]

final_docs = [doc for _, doc in reranked]