Skip to main content

Overview

Reranking is an advanced feature that improves the relevance of memory search results by re-ordering them based on more sophisticated relevance scoring. After initial vector similarity search, rerankers use specialized models to provide more accurate relevance scores.
Reranking operates as a post-processing step after the initial vector search. It takes the top results from vector similarity search and re-scores them using more advanced models or custom logic.

How It Works

  1. Vector Search: Initial semantic similarity search retrieves candidate memories
  2. Reranking: Selected reranker re-scores candidates using advanced models
  3. Final Results: Re-ordered results with both vector and rerank scores

Quick Start

Enable reranking by adding a rerank section to your memory configuration:
Python
from mem0 import Memory

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

memory = Memory.from_config(config)

# Add memories
messages = [
    {"role": "user", "content": "I love Italian pasta, especially carbonara"},
    {"role": "assistant", "content": "Carbonara is a classic Roman dish!"}
]

memory.add(messages, user_id="alice")

# Search with reranking - results automatically include rerank scores
results = memory.search("What Italian dishes does the user like?", user_id="alice")

for result in results['results']:
    print(f"Memory: {result['memory']}")
    print(f"Vector Score: {result['score']:.3f}")
    print(f"Rerank Score: {result['rerank_score']:.3f}")

Supported Providers

Mem0 supports multiple reranking providers:

When to Use Reranking

Reranking is particularly effective for:
  • Improved Relevance: When vector search alone doesn’t provide sufficiently relevant results
  • Domain-Specific Queries: Specialized terminology or context that benefits from advanced models
  • Customer Support: Finding the most relevant help articles and documentation
  • Knowledge Management: Better search results in internal knowledge bases
  • Personal AI Assistants: More accurate memory recall for user queries

Configuration Options

Each reranker has specific configuration options. See the Rerankers Documentation for detailed configuration parameters.

Basic Configuration

Python
"rerank": {
    "provider": "zero_entropy",  # or "cohere", "sentence_transformer", "llm"
    "config": {
        "top_k": 5,              # Limit results after reranking
        "api_key": "your-key"    # Provider-specific API key
    }
}

Controlling Reranking

You can enable or disable reranking per search:
Python
# Search with reranking (default when configured)
results = memory.search("query", user_id="alice", rerank=True)

# Search without reranking
results = memory.search("query", user_id="alice", rerank=False)

Performance Considerations

  • Latency: Reranking adds processing time but significantly improves relevance
  • Cost: API-based rerankers (Zero Entropy, Cohere, LLM) have per-request costs
  • Local Options: Sentence Transformer reranker runs locally with no API costs
  • Quality vs Speed: Balance based on your application’s requirements

Next Steps

I