{"record":{"id":"489480e9eaa18cd4","repo":"mem0ai/mem0","slug":"unsupported-embedder-provider-provider-name","errorCode":null,"errorMessage":"Unsupported Embedder provider: {provider_name}","messagePattern":"Unsupported Embedder provider: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/utils/factory.py","lineNumber":177,"sourceCode":"        \"vertexai\": \"mem0.embeddings.vertexai.VertexAIEmbedding\",\n        \"together\": \"mem0.embeddings.together.TogetherEmbedding\",\n        \"lmstudio\": \"mem0.embeddings.lmstudio.LMStudioEmbedding\",\n        \"langchain\": \"mem0.embeddings.langchain.LangchainEmbedding\",\n        \"aws_bedrock\": \"mem0.embeddings.aws_bedrock.AWSBedrockEmbedding\",\n        \"fastembed\": \"mem0.embeddings.fastembed.FastEmbedEmbedding\",\n    }\n\n    @classmethod\n    def create(cls, provider_name, config, vector_config: Optional[dict]):\n        if provider_name == \"upstash_vector\" and vector_config and vector_config.enable_embeddings:\n            return MockEmbeddings()\n        class_type = cls.provider_to_class.get(provider_name)\n        if class_type:\n            embedder_instance = load_class(class_type)\n            base_config = BaseEmbedderConfig(**config)\n            return embedder_instance(base_config)\n        else:\n            raise ValueError(f\"Unsupported Embedder provider: {provider_name}\")\n\n\nclass VectorStoreFactory:\n    provider_to_class = {\n        \"qdrant\": \"mem0.vector_stores.qdrant.Qdrant\",\n        \"chroma\": \"mem0.vector_stores.chroma.ChromaDB\",\n        \"pgvector\": \"mem0.vector_stores.pgvector.PGVector\",\n        \"milvus\": \"mem0.vector_stores.milvus.MilvusDB\",\n        \"upstash_vector\": \"mem0.vector_stores.upstash_vector.UpstashVector\",\n        \"azure_ai_search\": \"mem0.vector_stores.azure_ai_search.AzureAISearch\",\n        \"azure_mysql\": \"mem0.vector_stores.azure_mysql.AzureMySQL\",\n        \"pinecone\": \"mem0.vector_stores.pinecone.PineconeDB\",\n        \"mongodb\": \"mem0.vector_stores.mongodb.MongoDB\",\n        \"redis\": \"mem0.vector_stores.redis.RedisDB\",\n        \"valkey\": \"mem0.vector_stores.valkey.ValkeyDB\",\n        \"databricks\": \"mem0.vector_stores.databricks.Databricks\",\n        \"elasticsearch\": \"mem0.vector_stores.elasticsearch.ElasticsearchDB\",\n        \"vertex_ai_vector_search\": \"mem0.vector_stores.vertex_ai_vector_search.GoogleMatchingEngine\",","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/utils/factory.py#L159-L195","documentation":"Thrown by EmbedderFactory.create when provider_name is not in its provider_to_class mapping. Only these embedder keys are accepted: openai, ollama, huggingface, azure_openai, gemini, vertexai, together, lmstudio, langchain, aws_bedrock, fastembed (plus the special-case 'upstash_vector' with vector_config.enable_embeddings which returns MockEmbeddings).","triggerScenarios":"Setting config {'embedder': {'provider': 'sentence_transformers'}} (not registered — use 'huggingface' or 'sentence_transformer' reranker category instead); using 'azure' instead of 'azure_openai'; using 'vertex_ai' instead of 'vertexai'; using 'cohere' which has no embedder in this factory; enabling an embedder provider with a name that only exists in the LLM factory.","commonSituations":"Copy-pasting a provider name from the LLM or vector-store docs into the embedder section; assuming every provider mem0 supports for LLMs also supports embeddings; spelling 'huggingface' as 'hugging_face'.","solutions":["Set embedder.provider to an exact key of EmbedderFactory.provider_to_class (openai, azure_openai, gemini, vertexai, together, ollama, huggingface, fastembed, lmstudio, langchain, aws_bedrock)","Note it is 'vertexai' (no underscore) for embeddings but 'vertex_ai_vector_search' for the vector store","For local embeddings use 'huggingface' or 'fastembed' rather than unregistered names","If using Upstash vector store built-in embeddings, configure it via vector_store config with enable_embeddings, not the embedder section"],"exampleFix":"// before\nconfig = {\"embedder\": {\"provider\": \"vertex_ai\"}}\nMemory.from_config(config)\n\n# after\nconfig = {\"embedder\": {\"provider\": \"vertexai\"}}\nMemory.from_config(config)","handlingStrategy":"validation","validationCode":"from mem0.utils.factory import EmbedderFactory\nprovider = cfg['embedder']['provider']\nif provider not in EmbedderFactory.provider_to_class:\n    raise ConfigError(f\"unknown embedder {provider!r}; valid: {sorted(EmbedderFactory.provider_to_class)}\")","typeGuard":"def is_known_embedder(p: str) -> bool:\n    from mem0.utils.factory import EmbedderFactory\n    return isinstance(p, str) and p in EmbedderFactory.provider_to_class","tryCatchPattern":"try:\n    memory = Memory.from_config(config)\nexcept ValueError as e:\n    if 'Unsupported Embedder provider' in str(e):\n        raise ConfigError(str(e)) from e\n    raise","preventionTips":["Remember embedder keys differ from vector-store keys ('vertexai' vs 'vertex_ai_vector_search')","Validate the whole config at app startup with a schema that enumerates allowed provider keys","Log the supported list once at boot: EmbedderFactory.provider_to_class.keys()"],"tags":["configuration","embeddings","factory","validation"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}