diff --git a/src/crewai/utilities/embedding_configurator.py b/src/crewai/utilities/embedding_configurator.py index bceddffc4..a465bd321 100644 --- a/src/crewai/utilities/embedding_configurator.py +++ b/src/crewai/utilities/embedding_configurator.py @@ -17,6 +17,7 @@ class EmbeddingConfigurator: "bedrock": self._configure_bedrock, "huggingface": self._configure_huggingface, "watson": self._configure_watson, + "custom": self._configure_custom, } def configure_embedder( @@ -182,6 +183,31 @@ class EmbeddingConfigurator: url=config.get("api_url"), ) + @staticmethod + def _configure_custom(config, model_name): + """Configure a custom embedding function. + + Args: + config: Configuration dictionary containing: + - embedder: Custom EmbeddingFunction instance + model_name: Not used for custom embedders + + Returns: + EmbeddingFunction: The validated custom embedding function + + Raises: + ValueError: If embedder is missing or invalid + """ + embedder = config.get("embedder") + if not embedder or not isinstance(embedder, EmbeddingFunction): + raise ValueError("Custom provider requires a valid EmbeddingFunction instance") + + try: + validate_embedding_function(embedder) + return embedder + except Exception as e: + raise ValueError(f"Invalid custom embedding function: {str(e)}") + @staticmethod def _configure_watson(config, model_name): try: