mem0ai/mem0 · error · ValueError

Unsupported reranker provider: {provider_name}

Error message

Unsupported reranker provider: {provider_name}

What it means

Thrown by RerankerFactory.create when provider_name is not in its provider_to_class mapping. Only five reranker keys are registered: cohere, sentence_transformer, zero_entropy, llm_reranker, huggingface. Any other string in the reranker config is rejected before config parsing.

Source

Thrown at mem0/utils/factory.py:262

    @classmethod
    def create(cls, provider_name: str, config: Optional[Union[BaseRerankerConfig, Dict]] = None, **kwargs):
        """
        Create a reranker instance based on the provider and configuration.

        Args:
            provider_name: The reranker provider (e.g., 'cohere', 'sentence_transformer')
            config: Configuration object or dictionary
            **kwargs: Additional configuration parameters

        Returns:
            Reranker instance configured for the specified provider

        Raises:
            ImportError: If the provider class cannot be imported
            ValueError: If the provider is not supported
        """
        if provider_name not in cls.provider_to_class:
            raise ValueError(f"Unsupported reranker provider: {provider_name}")

        class_path, config_class = cls.provider_to_class[provider_name]

        # Handle configuration
        if config is None:
            config = config_class(**kwargs)
        elif isinstance(config, dict):
            config = config_class(**config, **kwargs)
        elif not isinstance(config, BaseRerankerConfig):
            raise ValueError(f"Config must be a {config_class.__name__} instance or dict")

        # Import and create the reranker class
        try:
            reranker_class = load_class(class_path)
        except (ImportError, AttributeError) as e:
            raise ImportError(f"Could not import reranker for provider '{provider_name}': {e}")

        return reranker_class(config)

View on GitHub (pinned to 001c235229)

Solutions

  1. Use one of: cohere, sentence_transformer, zero_entropy, llm_reranker, huggingface
  2. For GPT/OpenAI-based reranking use 'llm_reranker', not 'openai'
  3. Use exactly 'sentence_transformer' (underscore), never 'sentence-transformer'
  4. Print RerankerFactory.provider_to_class.keys() to confirm available keys in your installed version

Example fix

// before
config = {"reranker": {"provider": "sentence-transformer", "config": {"model": "..."}}}
Memory.from_config(config)

# after
config = {"reranker": {"provider": "sentence_transformer", "config": {"model": "..."}}}
Memory.from_config(config)
Defensive patterns

Strategy: validation

Validate before calling

from mem0.utils.factory import RerankerFactory
provider = cfg.get('reranker', {}).get('provider')
if provider is not None and provider not in RerankerFactory.provider_to_class:
    raise ConfigError(f"unknown reranker {provider!r}; valid: {sorted(RerankerFactory.provider_to_class)}")

Type guard

def is_known_reranker(p: str) -> bool:
    from mem0.utils.factory import RerankerFactory
    return isinstance(p, str) and p in RerankerFactory.provider_to_class

Try / catch

try:
    reranker = RerankerFactory.create(provider, cfg)
except ValueError as e:
    if 'Unsupported reranker provider' in str(e):
        raise ConfigError(str(e)) from e
    raise

Prevention

When it happens

Trigger: Setting config {'reranker': {'provider': 'openai'}} — use 'llm_reranker' for LLM-based reranking; using 'sentence-transformer' with a hyphen instead of 'sentence_transformer'; using 'hf' instead of 'huggingface'; using a hosted-platform reranker name that does not exist in the OSS factory.

Common situations: Enabling reranking in MemoryConfig for the first time and guessing the provider key; hyphen/underscore confusion from docs or blog posts; assuming any embedder provider can also rerank.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/bce4dfc34caa6d20. Report an issue: GitHub.