File size: 1,159 Bytes
f6cb78b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# core/vectorstore/embeddings.py
import os

from dotenv import load_dotenv
from langchain_huggingface import HuggingFaceEmbeddings

load_dotenv(dotenv_path="config/.env")


class EmbeddingManager:
    """

    Singleton para gestionar embeddings HuggingFace normalizados (coseno).

    """

    _instance = None

    def __new__(cls):
        if cls._instance is None:
            # Leer nombre de modelo, con valor por defecto
            model = os.getenv(
                "MODEL_EMBEDDINGS",
                "sentence-transformers/distiluse-base-multilingual-cased",
            )
            cls._instance = super().__new__(cls)
            # Aquí creamos el atributo de instancia
            cls._instance.embeddings = HuggingFaceEmbeddings(
                model_name=model,
                encode_kwargs={"normalize_embeddings": True},
            )
        return cls._instance

    @classmethod
    def get_embeddings(cls):
        """

        Devuelve el objeto de embeddings del singleton.

        """
        if cls._instance is None:
            cls._instance = cls()
        return cls._instance.embeddings