{"record":{"id":"bce4dfc34caa6d20","repo":"mem0ai/mem0","slug":"unsupported-reranker-provider-provider-name","errorCode":null,"errorMessage":"Unsupported reranker provider: {provider_name}","messagePattern":"Unsupported reranker provider: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/utils/factory.py","lineNumber":262,"sourceCode":"    @classmethod\n    def create(cls, provider_name: str, config: Optional[Union[BaseRerankerConfig, Dict]] = None, **kwargs):\n        \"\"\"\n        Create a reranker instance based on the provider and configuration.\n\n        Args:\n            provider_name: The reranker provider (e.g., 'cohere', 'sentence_transformer')\n            config: Configuration object or dictionary\n            **kwargs: Additional configuration parameters\n\n        Returns:\n            Reranker instance configured for the specified provider\n\n        Raises:\n            ImportError: If the provider class cannot be imported\n            ValueError: If the provider is not supported\n        \"\"\"\n        if provider_name not in cls.provider_to_class:\n            raise ValueError(f\"Unsupported reranker provider: {provider_name}\")\n\n        class_path, config_class = cls.provider_to_class[provider_name]\n\n        # Handle configuration\n        if config is None:\n            config = config_class(**kwargs)\n        elif isinstance(config, dict):\n            config = config_class(**config, **kwargs)\n        elif not isinstance(config, BaseRerankerConfig):\n            raise ValueError(f\"Config must be a {config_class.__name__} instance or dict\")\n\n        # Import and create the reranker class\n        try:\n            reranker_class = load_class(class_path)\n        except (ImportError, AttributeError) as e:\n            raise ImportError(f\"Could not import reranker for provider '{provider_name}': {e}\")\n\n        return reranker_class(config)","sourceCodeStart":244,"sourceCodeEnd":280,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/utils/factory.py#L244-L280","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use one of: cohere, sentence_transformer, zero_entropy, llm_reranker, huggingface","For GPT/OpenAI-based reranking use 'llm_reranker', not 'openai'","Use exactly 'sentence_transformer' (underscore), never 'sentence-transformer'","Print RerankerFactory.provider_to_class.keys() to confirm available keys in your installed version"],"exampleFix":"// before\nconfig = {\"reranker\": {\"provider\": \"sentence-transformer\", \"config\": {\"model\": \"...\"}}}\nMemory.from_config(config)\n\n# after\nconfig = {\"reranker\": {\"provider\": \"sentence_transformer\", \"config\": {\"model\": \"...\"}}}\nMemory.from_config(config)","handlingStrategy":"validation","validationCode":"from mem0.utils.factory import RerankerFactory\nprovider = cfg.get('reranker', {}).get('provider')\nif provider is not None and provider not in RerankerFactory.provider_to_class:\n    raise ConfigError(f\"unknown reranker {provider!r}; valid: {sorted(RerankerFactory.provider_to_class)}\")","typeGuard":"def is_known_reranker(p: str) -> bool:\n    from mem0.utils.factory import RerankerFactory\n    return isinstance(p, str) and p in RerankerFactory.provider_to_class","tryCatchPattern":"try:\n    reranker = RerankerFactory.create(provider, cfg)\nexcept ValueError as e:\n    if 'Unsupported reranker provider' in str(e):\n        raise ConfigError(str(e)) from e\n    raise","preventionTips":["Only five reranker keys exist: cohere, sentence_transformer, zero_entropy, llm_reranker, huggingface","Underscores, never hyphens, in 'sentence_transformer'","For OpenAI-model reranking the key is 'llm_reranker'"],"tags":["configuration","reranker","factory","validation"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}