File size: 1,751 Bytes
e70c280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
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
59
60
61
"""
File: /client_small.py
Created Date: Wednesday December 31st 2025
Author: Christian Nonis <alch.infoemail@gmail.com>
-----
Last Modified: Wednesday December 31st 2025 9:55:46 am
Modified By: Christian Nonis <alch.infoemail@gmail.com>
-----
"""

from __future__ import annotations

from typing import TYPE_CHECKING

from src.adapters.interfaces.embeddings import EmbeddingsClient
from src.config import config

if TYPE_CHECKING:
    from sentence_transformers import SentenceTransformer

_model: SentenceTransformer | None = None


def _get_model() -> SentenceTransformer:
    global _model
    if _model is None:
        from sentence_transformers import SentenceTransformer
        _model = SentenceTransformer(config.embeddings.small_model)
    return _model


class EmbeddingsClientSmall(EmbeddingsClient):
    def embed_text(self, text: str) -> list[float]:
        """
        Return the embedding vector for the given text using the configured model.

        Parameters:
            text (str): Input text to encode.

        Returns:
            list[float]: Dense embedding vector representing the input text.
        """
        embedding = _get_model().encode(text, convert_to_numpy=True)
        return embedding.tolist()

    def embed_texts(self, texts: list[str]) -> list[list[float]]:
        """
        Return the embedding vectors for the given texts using the configured model.

        Parameters:
            texts (list[str]): Input texts to encode.

        Returns:
            list[list[float]]: Dense embedding vectors representing the input texts.
        """
        embeddings = _get_model().encode(texts, convert_to_numpy=True)
        return embeddings.tolist()


_embeddings_small_client = EmbeddingsClientSmall()