Skip to content

xwhy.models.EmbeddingFactory

Manage embedding model instantiation via a registry.

Source code in src/xwhy/models/embeddings/factory.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class EmbeddingFactory:
    """Manage embedding model instantiation via a registry."""

    _registry: ClassVar[dict[EmbeddingType, Callable[..., BaseEmbedding]]] = {}

    @classmethod
    def register(
        cls, embedding: EmbeddingType, builder: Callable[..., BaseEmbedding]
    ) -> None:
        """Register a builder function for an embedding type.

        Args:
            embedding: The type of embedding to register.
            builder: A callable (function/lambda) that accepts keyword arguments
                and returns a BaseEmbedding instance.

        Raises:
            ValueError: If the embedding type is already registered.

        """
        if embedding in cls._registry:
            raise ValueError(f"Embedding already registered: {embedding}")
        cls._registry[embedding] = builder

    @classmethod
    def create(cls, embedding: EmbeddingType, **kwargs: object) -> BaseEmbedding:
        """Instantiate and configure an embedding model.

        Args:
            embedding: The type of embedding to create.
            **kwargs: Arbitrary keyword arguments passed to the builder function,
                such as 'settings' or 'model_name'.

        Returns:
            An instantiated BaseEmbedding object.

        Raises:
            ValueError: If the embedding type is not registered.

        """
        if embedding not in cls._registry:
            raise ValueError(f"Unsupported embedding: {embedding}")

        return cls._registry[embedding](**kwargs)

    @classmethod
    def clear(cls) -> None:
        """Reset registry to defaults."""
        cls._registry.clear()

register(embedding, builder) classmethod

Register a builder function for an embedding type.

Parameters:

Name Type Description Default
embedding EmbeddingType

The type of embedding to register.

required
builder Callable[..., BaseEmbedding]

A callable (function/lambda) that accepts keyword arguments and returns a BaseEmbedding instance.

required

Raises:

Type Description
ValueError

If the embedding type is already registered.

Source code in src/xwhy/models/embeddings/factory.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@classmethod
def register(
    cls, embedding: EmbeddingType, builder: Callable[..., BaseEmbedding]
) -> None:
    """Register a builder function for an embedding type.

    Args:
        embedding: The type of embedding to register.
        builder: A callable (function/lambda) that accepts keyword arguments
            and returns a BaseEmbedding instance.

    Raises:
        ValueError: If the embedding type is already registered.

    """
    if embedding in cls._registry:
        raise ValueError(f"Embedding already registered: {embedding}")
    cls._registry[embedding] = builder

create(embedding, **kwargs) classmethod

Instantiate and configure an embedding model.

Parameters:

Name Type Description Default
embedding EmbeddingType

The type of embedding to create.

required
**kwargs object

Arbitrary keyword arguments passed to the builder function, such as 'settings' or 'model_name'.

{}

Returns:

Type Description
BaseEmbedding

An instantiated BaseEmbedding object.

Raises:

Type Description
ValueError

If the embedding type is not registered.

Source code in src/xwhy/models/embeddings/factory.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@classmethod
def create(cls, embedding: EmbeddingType, **kwargs: object) -> BaseEmbedding:
    """Instantiate and configure an embedding model.

    Args:
        embedding: The type of embedding to create.
        **kwargs: Arbitrary keyword arguments passed to the builder function,
            such as 'settings' or 'model_name'.

    Returns:
        An instantiated BaseEmbedding object.

    Raises:
        ValueError: If the embedding type is not registered.

    """
    if embedding not in cls._registry:
        raise ValueError(f"Unsupported embedding: {embedding}")

    return cls._registry[embedding](**kwargs)

clear() classmethod

Reset registry to defaults.

Source code in src/xwhy/models/embeddings/factory.py
55
56
57
58
@classmethod
def clear(cls) -> None:
    """Reset registry to defaults."""
    cls._registry.clear()