{"record":{"id":"428646ba34908020","repo":"mem0ai/mem0","slug":"unsupported-vector-store-provider-provider-428646","errorCode":null,"errorMessage":"Unsupported vector store provider: {provider}","messagePattern":"Unsupported vector store provider: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mem0/vector_stores/configs.py","lineNumber":47,"sourceCode":"        \"elasticsearch\": \"ElasticsearchConfig\",\n        \"vertex_ai_vector_search\": \"GoogleMatchingEngineConfig\",\n        \"opensearch\": \"OpenSearchConfig\",\n        \"supabase\": \"SupabaseConfig\",\n        \"weaviate\": \"WeaviateConfig\",\n        \"faiss\": \"FAISSConfig\",\n        \"langchain\": \"LangchainConfig\",\n        \"s3_vectors\": \"S3VectorsConfig\",\n        \"turbopuffer\": \"TurbopufferConfig\",\n        \"oracledb\": \"OracleAIVectorSearchConfig\",\n    }\n\n    @model_validator(mode=\"after\")\n    def validate_and_create_config(self) -> \"VectorStoreConfig\":\n        provider = self.provider\n        config = self.config\n\n        if provider not in self._provider_configs:\n            raise ValueError(f\"Unsupported vector store provider: {provider}\")\n\n        module = __import__(\n            f\"mem0.configs.vector_stores.{provider}\",\n            fromlist=[self._provider_configs[provider]],\n        )\n        config_class = getattr(module, self._provider_configs[provider])\n\n        if config is None:\n            config = {}\n\n        if not isinstance(config, dict):\n            if not isinstance(config, config_class):\n                raise ValueError(f\"Invalid config type for provider {provider}\")\n            return self\n\n        # also check if path in allowed kays for pydantic model, and whether config extra fields are allowed\n        if \"path\" not in config and \"path\" in config_class.__annotations__:\n            config[\"path\"] = f\"/tmp/{provider}\"","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0/vector_stores/configs.py#L29-L65","documentation":"ValueError from VectorStoreConfig's model_validator (mem0/vector_stores/configs.py) when self.provider is not a key in _provider_configs. The validator is the dispatcher that dynamically imports mem0.configs.vector_stores.<provider>, so an unknown or misspelled provider name aborts config construction before any backend is touched.","triggerScenarios":"Building MemoryConfig with vector_store={'provider': 'qdrnat'} (typo), a provider name with wrong casing ('Chroma'), or a genuinely unsupported backend name. Also triggered by passing an empty or None provider where the default does not match the mapping.","commonSituations":"Typos in YAML/JSON/ENV-driven config; upgrading mem0 where a provider was renamed or removed; copy-pasting a provider string from docs of a newer/older version than the installed one.","solutions":["Correct the provider string to match a key of VectorStoreConfig._provider_configs exactly (lowercase snake_case, e.g. 'qdrant', 'chroma', 'azure_mysql').","Print valid providers in your setup: from mem0.vector_stores.configs import VectorStoreConfig; print(VectorStoreConfig._provider_configs.keys()).","Validate provider names against that mapping in config-loading code and fail with a clear message at startup."],"exampleFix":"# before\nconfig = {\"vector_store\": {\"provider\": \"qdrant \", \"config\": {...}}}  # trailing space -> ValueError\n\n# after\nconfig = {\"vector_store\": {\"provider\": \"qdrant\", \"config\": {...}}}","handlingStrategy":"validation","validationCode":"from mem0.vector_stores.configs import VectorStoreConfig\n\nSUPPORTED_PROVIDERS = set(VectorStoreConfig._provider_configs)\n\nif cfg_provider not in SUPPORTED_PROVIDERS:\n    raise ValueError(f\"provider {cfg_provider!r} unsupported; choose from {sorted(SUPPORTED_PROVIDERS)}\")\n\nvector_store_config = VectorStoreConfig(provider=cfg_provider, config=cfg)","typeGuard":"def is_supported_vector_store_provider(p) -> bool:\n    from mem0.vector_stores.configs import VectorStoreConfig\n    return isinstance(p, str) and p in VectorStoreConfig._provider_configs","tryCatchPattern":null,"preventionTips":["Validate provider strings against the mapping at config load time and strip whitespace.","Fail fast with the list of valid providers in your own error message.","Pin the mem0ai version and re-validate providers after upgrades."],"tags":["config","validation","vector-store","pydantic"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}