Spaces:
Running
Running
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()
|