{"record":{"id":"7ba243dee98c8cd2","repo":"crewAIInc/crewAI","slug":"unsupported-vector-database-provider-provider","errorCode":null,"errorMessage":"Unsupported vector database provider: '{provider}'. CrewAI RAG currently supports: {', '.join(supported)}.","messagePattern":"Unsupported vector database provider: '(.+?)'\\. CrewAI RAG currently supports: (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/tools/rag/rag_tool.py","lineNumber":207,"sourceCode":"        return self\n\n    def _parse_config(self, config: RagToolConfig) -> Any:\n        \"\"\"Normalize the RagToolConfig into a provider-specific config object.\n\n        Defaults to 'chromadb' with no extra provider config if none is supplied.\n        \"\"\"\n        if not config:\n            return self._create_provider_config(\"chromadb\", {}, None)\n\n        vectordb_cfg = cast(VectorDbConfig, config.get(\"vectordb\", {}))\n        provider: Literal[\"chromadb\", \"qdrant\"] = vectordb_cfg.get(\n            \"provider\", \"chromadb\"\n        )\n        provider_config: dict[str, Any] = vectordb_cfg.get(\"config\", {})\n\n        supported = (\"chromadb\", \"qdrant\")\n        if provider not in supported:\n            raise ValueError(\n                f\"Unsupported vector database provider: '{provider}'. \"\n                f\"CrewAI RAG currently supports: {', '.join(supported)}.\"\n            )\n\n        embedding_spec: ProviderSpec | None = config.get(\"embedding_model\")\n        if embedding_spec:\n            embedding_spec = cast(\n                ProviderSpec, _validate_embedding_config(embedding_spec)\n            )\n\n        embedding_function = build_embedder(embedding_spec) if embedding_spec else None\n        return self._create_provider_config(\n            provider, provider_config, embedding_function\n        )\n\n    @staticmethod\n    def _create_provider_config(\n        provider: Literal[\"chromadb\", \"qdrant\"],","sourceCodeStart":189,"sourceCodeEnd":225,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/tools/rag/rag_tool.py#L189-L225","documentation":"Raised when a RAG tool config specifies a vectordb provider outside the supported set. CrewAI RAG currently supports only 'chromadb' and 'qdrant'; any other string (or a typo) in config['vectordb']['provider'] fails fast with this ValueError instead of silently falling back to the default.","triggerScenarios":"Passing config = {'vectordb': {'provider': 'pinecone', 'config': {...}}} or similar unsupported names, or misspelling 'qdrant'/'chromadb'. Note: when config is falsy/empty, chromadb is created by default and this error cannot occur.","commonSituations":"Assuming a popular vector DB (weaviate, milvus, pinecone, pgvector) is supported because embedder configs are pluggable; renaming after copy-pasting an example config; case sensitivity ('Qdrant' vs 'qdrant').","solutions":["Change provider to 'chromadb' (zero-setup default) or 'qdrant' (self-hosted/cloud) matching your actual database","Fix typos and casing — the comparison is case-sensitive against ('chromadb', 'qdrant')","If you need another vector DB, request/contribute an adapter rather than passing its name","For quick prototyping, omit the vectordb block entirely to get default chromadb"],"exampleFix":"# before\nconfig = {'vectordb': {'provider': 'pinecone', 'config': {...}}}  # ValueError\n\n# after\nconfig = {'vectordb': {'provider': 'qdrant', 'config': {'url': 'http://localhost:6333'}}}\n","handlingStrategy":"type-guard","validationCode":"SUPPORTED_VECTORDBS = {\"chromadb\", \"qdrant\"}\n\nprovider = config.get(\"vectordb\", {}).get(\"provider\", \"chromadb\")\nassert provider in SUPPORTED_VECTORDBS, f\"provider must be one of {SUPPORTED_VECTORDBS}\"","typeGuard":"from typing import TypedDict, Literal\n\nProvider = Literal[\"chromadb\", \"qdrant\"]\n\ndef is_supported_provider(p: str) -> bool:\n    return isinstance(p, str) and p in {\"chromadb\", \"qdrant\"}","tryCatchPattern":"try:\n    tool = RAGTool(config=config)\nexcept ValueError as e:\n    if \"Unsupported vector database provider\" in str(e):\n        config[\"vectordb\"][\"provider\"] = \"chromadb\"  # explicit fallback decision\n        tool = RAGTool(config=config)\n    else:\n        raise","preventionTips":["Restrict provider values in your config schema to Literal['chromadb','qdrant']","Default to chromadb for local dev; only set qdrant when a qdrant instance exists","Keep provider names lowercase — matching is case-sensitive","Validate config with a JSON schema before it reaches RAGTool"],"tags":["configuration","vector-database","rag","validation"],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}