# app/services/embeddings_service.py
import logging
from typing import Optional

from langchain_huggingface import HuggingFaceEmbeddings

logger = logging.getLogger(__name__)


class EmbeddingsService:
    """Factory for embeddings; handles lazy loading."""

    def __init__(self, model_name: str = "all-MiniLM-L6-v2"):
        self.model_name = model_name
        self._embeddings: Optional[HuggingFaceEmbeddings] = None

    def get(self) -> HuggingFaceEmbeddings:
        """Get or load embeddings."""
        if self._embeddings is None:
            try:
                logger.info("Loading embeddings model: %s", self.model_name)
                self._embeddings = HuggingFaceEmbeddings(model_name=self.model_name)
            except Exception as e:
                logger.error("Failed to load embeddings: %s", e)
                raise
        return self._embeddings
