resumeradar / src /embedder.py
Kartik-work's picture
ResumeRadar — semantic resume screener v1
6817686
Raw
History Blame Contribute Delete
1.24 kB
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