## Common Configuration Parameters

All rerankers share these common configuration parameters:

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `provider`  | Reranker provider name                     | `str`  | Required |
| `top_k`    | Maximum number of results to return after reranking | `int`  | `None`   |
| `api_key`  | API key for the reranker service          | `str`  | `None`   |

## Provider-Specific Configuration

### Zero Entropy

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `model`     | Model to use: `zerank-1` or `zerank-1-small` | `str`  | "zerank-1" |
| `api_key`  | Zero Entropy API key                      | `str`  | `None`   |

### Cohere

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `model`     | Cohere rerank model                        | `str`  | "rerank-v3.5" |
| `api_key`  | Cohere API key                            | `str`  | `None`   |
| `return_documents` | Whether to return document texts in response | `bool` | `False`  |
| `max_chunks_per_doc` | Maximum chunks per document           | `int`  | `None`   |

### Sentence Transformer

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `model`     | HuggingFace cross-encoder model name      | `str`  | "cross-encoder/ms-marco-MiniLM-L-6-v2" |
| `device`    | Device to run model on (`cpu`, `cuda`, etc.) | `str`  | `None`   |
| `batch_size`| Batch size for processing                  | `int`  | `32`     |
| `show_progress_bar` | Show progress during processing      | `bool` | `False`  |

### Hugging Face

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `model`     | HuggingFace reranker model name            | `str`  | "BAAI/bge-reranker-large" |
| `api_key`  | HuggingFace API token                       | `str`  | `None`   |
| `device`    | Device to run model on (`cpu`, `cuda`, etc.) | `str`  | `None`   |

### LLM-based

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `model`     | LLM model to use for scoring               | `str`  | "gpt-4o-mini" |
| `provider`  | LLM provider (`openai`, `anthropic`, etc.) | `str`  | "openai" |
| `api_key`  | API key for LLM provider                   | `str`  | `None`   |
| `temperature` | Temperature for LLM generation            | `float`| `0.0`    |
| `max_tokens` | Maximum tokens for LLM response           | `int`  | `100`    |
| `scoring_prompt` | Custom prompt template for scoring      | `str`  | Default scoring prompt |

### LLM Reranker

| Parameter   | Description                                | Type   | Default  |
| ----------- | ------------------------------------------ | ------ | -------- |
| `llm.provider` | LLM provider for reranking               | `str`  | Required |
| `llm.config` | LLM configuration object                  | `dict` | Required |
| `top_n`    | Number of results to return                | `int`  | `None`   |

## Environment Variables

You can set API keys using environment variables:

- `ZERO_ENTROPY_API_KEY` - Zero Entropy API key
- `COHERE_API_KEY` - Cohere API key
- `HUGGINGFACE_API_KEY` - HuggingFace API token
- `OPENAI_API_KEY` - OpenAI API key (for LLM-based reranker)
- `ANTHROPIC_API_KEY` - Anthropic API key (for LLM-based reranker)

## Basic Configuration Example

Python

```
config = {
    "vector_store": {
        "provider": "chroma",
        "config": {
            "collection_name": "my_memories",
            "path": "./chroma_db"
        }
    },
    "llm": {
        "provider": "openai",
        "config": {
            "model": "gpt-5-mini"
        }
    },
    "reranker": {
        "provider": "zero_entropy",
        "config": {
            "model": "zerank-1",
            "top_k": 5
        }
    }
}
```

## TypeScript SDK

The self-hosted TypeScript SDK supports the same five providers. Config keys are camelCase (`apiKey`, `topK`, `maxLength`) and each provider’s SDK is a peer dependency you install per reranker.

| Provider                  | Install                        | Default model          | Key config fields                                        |
| ------------------------- | ------------------------------ | ---------------------- | -------------------------------------------------------- |
| `cohere`                 | `pnpm add cohere-ai`          | `rerank-v3.5`         | `apiKey`, `model`, `topK`                               |
| `zero_entropy`           | `pnpm add zeroentropy`        | `zerank-1`           | `apiKey`, `model`, `topK`                               |
| `sentence_transformer`   | `pnpm add @huggingface/transformers` | `Xenova/ms-marco-MiniLM-L-6-v2` | `model`, `device`, `maxLength`, `normalize`, `topK`  |
| `huggingface`            | `pnpm add @huggingface/transformers` | `Xenova/bge-reranker-base` | `model`, `device`, `maxLength`, `normalize`, `topK`  |
| `llm_reranker`           | None (uses your LLM provider’s own SDK) | `openai` / `gpt-4o-mini` | `provider`, `model`, `apiKey`, `llm` (nested override), `topK` |

```
import { Memory } from "mem0ai/oss";

const memory = new Memory({
  reranker: {
    provider: "zero_entropy",
    config: { apiKey: process.env.ZERO_ENTROPY_API_KEY, topK: 5 },
  },
});
```

The local cross-encoder providers run on Transformers.js and default to ONNX model mirrors. Python default model strings must be swapped for their ONNX equivalents.
