import logging from sentence_transformers import SentenceTransformer logger = logging.getLogger(__name__) class EmbeddingService: def __init__(self, model_name: str = "intfloat/multilingual-e5-large"): logger.info("Loading embedding model: %s", model_name) self.model = SentenceTransformer(model_name) self.model_name = model_name logger.info("Embedding model loaded (dim=%d)", self.model.get_sentence_embedding_dimension()) def embed_documents(self, texts: list[str]) -> list[list[float]]: prefixed = [f"passage: {t}" for t in texts] embeddings = self.model.encode(prefixed, normalize_embeddings=True, show_progress_bar=False) return embeddings.tolist() def embed_query(self, query: str) -> list[float]: embedding = self.model.encode(f"query: {query}", normalize_embeddings=True) return embedding.tolist()