import logging

from rag.config import EMBEDDING_MODEL

logger = logging.getLogger(__name__)

_model = None


def get_embedder():
    global _model
    if _model is None:
        from sentence_transformers import SentenceTransformer

        logger.info(f"Cargando modelo de embeddings {EMBEDDING_MODEL}")
        _model = SentenceTransformer(EMBEDDING_MODEL)
        logger.info("Modelo cargado.")
    return _model


def embed(texts: list[str]) -> list[list[float]]:
    model = get_embedder()
    vectors = model.encode(texts, convert_to_numpy=True, normalize_embeddings=True)
    return vectors.tolist()


def embed_one(text: str) -> list[float]:
    return embed([text])[0]
