Spaces:
Sleeping
Sleeping
| import numpy as np | |
| from sentence_transformers import SentenceTransformer | |
| from config import EMBEDDING_MODEL, VECTOR_DIMENSIONS | |
| from core.logger import get_logger | |
| logger = get_logger(__name__) | |
| _model = None #caching the model load. Using Singleton patter with lazy initiallization | |
| def load_embedding_model() -> SentenceTransformer: | |
| global _model | |
| if _model is None: | |
| logger.info(f"Loading embedding model: {EMBEDDING_MODEL}") | |
| _model = SentenceTransformer(EMBEDDING_MODEL) | |
| logger.info(f"Model loaded - vector size: {VECTOR_DIMENSIONS}") | |
| return _model | |
| def embed_text(text: str) -> np.ndarray: | |
| #input validation | |
| if not text.strip(): | |
| logger.error("Cannot embed empty text") | |
| raise ValueError("Text cannot be empty") | |
| model = load_embedding_model() | |
| logger.info(f"Embedding text: {len(text)} chars") | |
| embedded_text = model.encode(text) | |
| if embedded_text.shape[0] != VECTOR_DIMENSIONS: | |
| logger.error(f"Dimension mismatch: expected {VECTOR_DIMENSIONS}, got : {embedded_text.shape[0]}") | |
| raise ValueError(f"Embedding dimension mismatch") | |
| logger.info(f"Embedded successfully: shape {embedded_text.shape}") | |
| return embedded_text |