Spaces:
Sleeping
Sleeping
File size: 1,241 Bytes
6817686 | 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 | 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 |