{"record":{"id":"81b9c4aca355156b","repo":"crewAIInc/crewAI","slug":"crewai-embedding-providers-not-available-make-sur","errorCode":null,"errorMessage":"CrewAI embedding providers not available. Make sure crewai is installed: {e}","messagePattern":"CrewAI embedding providers not available\\. Make sure crewai is installed: (.+?)","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/rag/embedding_service.py","lineNumber":126,"sourceCode":"            return os.getenv(env_key)\n        return None\n\n    def _initialize_embedding_function(self) -> None:\n        \"\"\"Initialize the embedding function using CrewAI's factory.\"\"\"\n        try:\n            from crewai.rag.embeddings.factory import build_embedder\n\n            config = self._build_provider_config()\n\n            self._embedding_function = build_embedder(config)\n\n            logger.info(\n                f\"Initialized {self.config.provider} embedding service with model \"\n                f\"{self.config.model}\"\n            )\n\n        except ImportError as e:\n            raise ImportError(\n                f\"CrewAI embedding providers not available. \"\n                f\"Make sure crewai is installed: {e}\"\n            ) from e\n        except Exception as e:\n            logger.error(f\"Failed to initialize embedding function: {e}\")\n            raise RuntimeError(\n                f\"Failed to initialize {self.config.provider} embedding service: {e}\"\n            ) from e\n\n    def _build_provider_config(self) -> dict[str, Any]:\n        \"\"\"Build configuration dictionary for CrewAI's embedding factory.\"\"\"\n        base_config = {\"provider\": self.config.provider, \"config\": {}}\n\n        # Provider-specific configuration mapping\n        if self.config.provider == \"openai\":\n            base_config[\"config\"] = {\n                \"api_key\": self.config.api_key,\n                \"model_name\": self.config.model,","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/rag/embedding_service.py#L108-L144","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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\""],"exampleFix":"# before: EmbeddingService(...) raises ImportError at init\n# after (shell):\n# uv add 'crewai>=0.80' crewai-tools\n# python -c \"from crewai.rag.embeddings.factory import build_embedder; print('ok')\"","handlingStrategy":"validation","validationCode":"try:\n    from crewai.rag.embeddings.factory import build_embedder  # noqa: F401\nexcept ImportError as e:\n    raise SystemExit('crewai embedding factory unavailable: uv add -U crewai') from e","typeGuard":null,"tryCatchPattern":"try:\n    svc = EmbeddingService(config=cfg)\nexcept ImportError as e:\n    raise SystemExit('upgrade crewai to a version with rag.embeddings.factory') from e","preventionTips":["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"],"tags":["rag","embeddings","crewai","dependency","import-error"],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}