Source code for haive.core.engine.embedding.providers.FakeEmbeddingConfig
"""Fake embedding configuration for testing."""fromtypingimportAnyfrompydanticimportField,field_validatorfromhaive.core.engine.embedding.baseimportBaseEmbeddingConfigfromhaive.core.engine.embedding.typesimportEmbeddingType
[docs]@BaseEmbeddingConfig.register(EmbeddingType.FAKE)classFakeEmbeddingConfig(BaseEmbeddingConfig):"""Configuration for fake embeddings (testing purposes). This configuration provides fake embeddings for testing and development purposes. It generates random embeddings without requiring external APIs. Examples: Basic usage: .. code-block:: python config = FakeEmbeddingConfig( name="fake_embeddings", model="fake-model", size=768 ) embeddings = config.instantiate() With custom dimensions:: config = FakeEmbeddingConfig( name="fake_embeddings", model="fake-model", size=1024 ) Attributes: embedding_type: Always EmbeddingType.FAKE model: Fake model name (can be any string) size: Dimension of the fake embeddings """embedding_type:EmbeddingType=Field(default=EmbeddingType.FAKE,description="The embedding provider type")# Fake embedding specific fieldssize:int=Field(default=768,description="Dimension of the fake embeddings")# SecureConfigMixin configuration (not needed for fake embeddings)provider:str=Field(default="fake",description="Provider name for API key resolution")
[docs]@field_validator("size")@classmethoddefvalidate_size(cls,v)->Any:"""Validate embedding size."""ifv<=0:raiseValueError("Embedding size must be positive")ifv>4096:raiseValueError("Embedding size too large (max 4096)")returnv
[docs]@field_validator("model")@classmethoddefvalidate_model(cls,v)->Any:"""Validate fake model name."""ifnotvornotv.strip():raiseValueError("Model name is required")returnv.strip()
[docs]definstantiate(self)->Any:"""Create a fake embeddings instance. Returns: FakeEmbeddings instance configured with the provided parameters Raises: ImportError: If langchain-community is not installed ValueError: If configuration is invalid """try:fromlangchain_community.embeddingsimportFakeEmbeddingsexceptImportError:raiseImportError("Fake embeddings require the langchain-community package. ""Install with: pip install langchain-community")# Validate configurationself.validate_configuration()# Build kwargskwargs={"size":self.size,}returnFakeEmbeddings(**kwargs)
[docs]defget_default_model(self)->str:"""Get the default model for fake embeddings."""return"fake-model"
[docs]defget_supported_models(self)->list[str]:"""Get list of supported fake embedding models."""return["fake-model","fake-small","fake-large","fake-test"]
[docs]defget_model_info(self)->dict:"""Get information about the configured model."""return{"dimensions":self.size,"description":"Fake embedding model for testing","provider":"fake","cost":0.0,}