crewAIInc/crewAI · error · ValueError
Unsupported vector database provider: '{provider}'. CrewAI R
Error message
Unsupported vector database provider: '{provider}'. CrewAI RAG currently supports: {', '.join(supported)}. What it means
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.
Source
Thrown at lib/crewai-tools/src/crewai_tools/tools/rag/rag_tool.py:207
return self
def _parse_config(self, config: RagToolConfig) -> Any:
"""Normalize the RagToolConfig into a provider-specific config object.
Defaults to 'chromadb' with no extra provider config if none is supplied.
"""
if not config:
return self._create_provider_config("chromadb", {}, None)
vectordb_cfg = cast(VectorDbConfig, config.get("vectordb", {}))
provider: Literal["chromadb", "qdrant"] = vectordb_cfg.get(
"provider", "chromadb"
)
provider_config: dict[str, Any] = vectordb_cfg.get("config", {})
supported = ("chromadb", "qdrant")
if provider not in supported:
raise ValueError(
f"Unsupported vector database provider: '{provider}'. "
f"CrewAI RAG currently supports: {', '.join(supported)}."
)
embedding_spec: ProviderSpec | None = config.get("embedding_model")
if embedding_spec:
embedding_spec = cast(
ProviderSpec, _validate_embedding_config(embedding_spec)
)
embedding_function = build_embedder(embedding_spec) if embedding_spec else None
return self._create_provider_config(
provider, provider_config, embedding_function
)
@staticmethod
def _create_provider_config(
provider: Literal["chromadb", "qdrant"],View on GitHub (pinned to 754d7323be)
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
Example fix
# before
config = {'vectordb': {'provider': 'pinecone', 'config': {...}}} # ValueError
# after
config = {'vectordb': {'provider': 'qdrant', 'config': {'url': 'http://localhost:6333'}}}
Defensive patterns
Strategy: type-guard
Validate before calling
SUPPORTED_VECTORDBS = {"chromadb", "qdrant"}
provider = config.get("vectordb", {}).get("provider", "chromadb")
assert provider in SUPPORTED_VECTORDBS, f"provider must be one of {SUPPORTED_VECTORDBS}" Type guard
from typing import TypedDict, Literal
Provider = Literal["chromadb", "qdrant"]
def is_supported_provider(p: str) -> bool:
return isinstance(p, str) and p in {"chromadb", "qdrant"} Try / catch
try:
tool = RAGTool(config=config)
except ValueError as e:
if "Unsupported vector database provider" in str(e):
config["vectordb"]["provider"] = "chromadb" # explicit fallback decision
tool = RAGTool(config=config)
else:
raise Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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').
Related errors
- Invalid configuration for embedding provider '{provider}':\n
- Project name cannot be empty
- Project name '{name}' produces invalid folder name '{folder_
- No deployable project files were found.
- Missing required fields in OAuth2 configuration: [{', '.join
AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15).
Data as JSON: /api/errors/7ba243dee98c8cd2.
Report an issue: GitHub.