Reranker Module
The Reranker module provides concrete implementations for reranking search results to improve relevance.
Import
from praisonai.adapters import LLMReranker
from praisonai.adapters.rerankers import CrossEncoderReranker, CohereReranker
Quick Example
from praisonai.adapters import LLMReranker
# Create LLM-based reranker
reranker = LLMReranker(model="gpt-4o-mini")
# Rerank documents
documents = ["Python is a language", "Java is compiled", "Python uses indentation"]
results = reranker.rerank(
query="What is Python?",
documents=documents,
top_k=2
)
for r in results:
print(f"Score: {r.score:.3f} - {r.text}")
Features
- LLM-based relevance scoring with any model
- Cross-encoder neural reranking
- Cohere Rerank API integration
- Batch processing for efficiency
- Async support
Classes
LLMReranker
Uses an LLM to score document relevance to a query.
from praisonai.adapters import LLMReranker
reranker = LLMReranker(
model="gpt-4o-mini",
batch_size=5
)
results = reranker.rerank("query", documents)
Parameters:
| Parameter | Type | Default | Description |
|---|
llm | Any | None | Custom LLM instance (Agent) |
model | str | "gpt-4o-mini" | Model for scoring |
batch_size | int | 5 | Documents per batch |
How it works:
- Prompts the LLM to rate relevance on a 0-10 scale
- Normalizes scores to 0-1 range
- Sorts by score descending
CrossEncoderReranker
Uses sentence-transformers cross-encoder for accurate relevance scoring.
from praisonai.adapters.rerankers import CrossEncoderReranker
reranker = CrossEncoderReranker(
model_name="cross-encoder/ms-marco-MiniLM-L-6-v2"
)
results = reranker.rerank("query", documents, top_k=5)
Parameters:
| Parameter | Type | Default | Description |
|---|
model_name | str | "cross-encoder/ms-marco-MiniLM-L-6-v2" | Cross-encoder model |
Requires sentence-transformers package: pip install sentence-transformers
CohereReranker
Uses Cohere’s rerank API for high-quality reranking.
from praisonai.adapters.rerankers import CohereReranker
reranker = CohereReranker(
api_key="your-api-key", # Or set COHERE_API_KEY env
model="rerank-english-v3.0"
)
results = reranker.rerank("query", documents, top_k=5)
Parameters:
| Parameter | Type | Default | Description |
|---|
api_key | str | COHERE_API_KEY env | Cohere API key |
model | str | "rerank-english-v3.0" | Rerank model |
Requires cohere package: pip install cohere
Methods
rerank(query, documents, top_k=None)
Rerank documents by relevance to query.
Parameters:
query (str): Search query
documents (List[str]): Documents to rerank
top_k (int, optional): Number of results to return
Returns: List[RerankResult] - Reranked documents with scores
arerank(query, documents, top_k=None)
Async version of rerank (calls sync internally).
Example: Full RAG Pipeline
from praisonai.adapters import (
ChromaVectorStore,
BasicRetriever,
LLMReranker
)
# Setup
store = ChromaVectorStore(namespace="docs")
retriever = BasicRetriever(
vector_store=store,
embedding_fn=get_embedding,
top_k=20 # Retrieve more for reranking
)
reranker = LLMReranker(model="gpt-4o-mini")
# Retrieve
query = "How to deploy Python apps?"
results = retriever.retrieve(query)
# Rerank
documents = [r.text for r in results]
reranked = reranker.rerank(query, documents, top_k=5)
# Use top results
for r in reranked:
print(f"Score: {r.score:.3f}")
print(f"Text: {r.text[:100]}...")
Example: Using with Agent
from praisonai.adapters import LLMReranker
from praisonaiagents import Agent
# Use an agent for reranking
agent = Agent(
instructions="You are a relevance scoring assistant",
llm="gpt-4o-mini"
)
reranker = LLMReranker(llm=agent)
results = reranker.rerank("Python basics", documents)
Reranker Selection Guide
| Use Case | Recommended |
|---|
| Best accuracy | CohereReranker |
| Local/offline | CrossEncoderReranker |
| Already using LLM | LLMReranker |
| Fast, no dependencies | Skip reranking |
Environment Variables
# For LLM reranker (uses litellm)
export OPENAI_API_KEY=sk-xxx
# For Cohere reranker
export COHERE_API_KEY=xxx
CLI Usage
# LLM reranker
praisonai knowledge query "What is Python?" --reranker llm
# Cross-encoder reranker
praisonai knowledge query "What is Python?" --reranker cross_encoder
# Cohere reranker
praisonai knowledge query "What is Python?" --reranker cohere