> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Reranker Module

> Document reranking implementations for improved search relevance

# Reranker Module

The Reranker module provides concrete implementations for reranking search results to improve relevance.

## Import

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.adapters import LLMReranker
from praisonai.adapters.rerankers import CrossEncoderReranker, CohereReranker
```

## Quick Example

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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:**

1. Prompts the LLM to rate relevance on a 0-10 scale
2. Normalizes scores to 0-1 range
3. Sorts by score descending

### `CrossEncoderReranker`

Uses sentence-transformers cross-encoder for accurate relevance scoring.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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 |

<Note>
  Requires `sentence-transformers` package: `pip install sentence-transformers`
</Note>

### `CohereReranker`

Uses Cohere's rerank API for high-quality reranking.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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   |

<Note>
  Requires `cohere` package: `pip install cohere`
</Note>

## 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

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
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

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# For LLM reranker (uses litellm)
export OPENAI_API_KEY=sk-xxx

# For Cohere reranker
export COHERE_API_KEY=xxx
```

## CLI Usage

```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# 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
```

## Related

* [Retrieval Module](/docs/sdk/praisonai/retrieval) - Retrieve documents
* [Vector Store Module](/docs/sdk/praisonai/vector_store) - Store documents
