crewAIInc/crewAI · error · ImportError
CrewAI embedding providers not available. Make sure crewai i
Error message
CrewAI embedding providers not available. Make sure crewai is installed: {e} What it means
EmbeddingService._initialize_embedding_function imports crewai.rag.embeddings.factory.build_embedder to construct the provider embedding function; if that import fails because the main crewai package (or its embedding subpackage) is missing or too old to contain it, an ImportError with this message is raised. crewai-tools depends on the host crewai package for the actual provider implementations.
Source
Thrown at lib/crewai-tools/src/crewai_tools/rag/embedding_service.py:126
return os.getenv(env_key)
return None
def _initialize_embedding_function(self) -> None:
"""Initialize the embedding function using CrewAI's factory."""
try:
from crewai.rag.embeddings.factory import build_embedder
config = self._build_provider_config()
self._embedding_function = build_embedder(config)
logger.info(
f"Initialized {self.config.provider} embedding service with model "
f"{self.config.model}"
)
except ImportError as e:
raise ImportError(
f"CrewAI embedding providers not available. "
f"Make sure crewai is installed: {e}"
) from e
except Exception as e:
logger.error(f"Failed to initialize embedding function: {e}")
raise RuntimeError(
f"Failed to initialize {self.config.provider} embedding service: {e}"
) from e
def _build_provider_config(self) -> dict[str, Any]:
"""Build configuration dictionary for CrewAI's embedding factory."""
base_config = {"provider": self.config.provider, "config": {}}
# Provider-specific configuration mapping
if self.config.provider == "openai":
base_config["config"] = {
"api_key": self.config.api_key,
"model_name": self.config.model,View on GitHub (pinned to 754d7323be)
Solutions
- Install/upgrade crewai: uv add crewai (pip install -U crewai) to a version containing crewai.rag.embeddings.factory
- Align versions: upgrade crewai-tools and crewai together so the factory API matches
- Check for a local file/dir named crewai.py or crewai/ shadowing the package
- Verify: python -c "from crewai.rag.embeddings.factory import build_embedder"
Example fix
# before: EmbeddingService(...) raises ImportError at init
# after (shell):
# uv add 'crewai>=0.80' crewai-tools
# python -c "from crewai.rag.embeddings.factory import build_embedder; print('ok')" Defensive patterns
Strategy: validation
Validate before calling
try:
from crewai.rag.embeddings.factory import build_embedder # noqa: F401
except ImportError as e:
raise SystemExit('crewai embedding factory unavailable: uv add -U crewai') from e Try / catch
try:
svc = EmbeddingService(config=cfg)
except ImportError as e:
raise SystemExit('upgrade crewai to a version with rag.embeddings.factory') from e Prevention
- Pin compatible crewai and crewai-tools versions together in the lockfile
- Add a startup import check for the embedding factory in RAG services
- Avoid naming local modules 'crewai' to prevent shadowing
When it happens
Trigger: Installing crewai-tools without the crewai package; an old crewai version predating crewai.rag.embeddings.factory; shadowing by a local 'crewai' module/package; broken environment where crewai imports but its rag submodule does not.
Common situations: Standalone use of crewai_tools.rag in a project that never installed crewai; version mismatch after upgrading one package but not the other; pip resolving an incompatible crewai version.
Related errors
- This subcommand requires the full crewai package. Install it
- anthropic is required for Anthropic file uploads. Install wi
- boto3 is required for Bedrock S3 file uploads. Install with:
- aioboto3 is required for async Bedrock S3 file uploads. Inst
- google-genai is required for Gemini file uploads. Install wi
AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15).
Data as JSON: /api/errors/81b9c4aca355156b.
Report an issue: GitHub.