edullm / core /vectorstore /embeddings.py
JairoDanielMT's picture
Upload 21 files
f6cb78b verified
# 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