Spaces:
Paused
Paused
| # 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 | |
| def get_embeddings(cls): | |
| """ | |
| Devuelve el objeto de embeddings del singleton. | |
| """ | |
| if cls._instance is None: | |
| cls._instance = cls() | |
| return cls._instance.embeddings | |