from sentence_transformers import SentenceTransformer import numpy as np from typing import List, Union class EmbeddingModel: def __init__(self): self.model = None self.model_name = 'keepitreal/vietnamese-sbert' def load_model(self): if self.model is None: try: self.model = SentenceTransformer(self.model_name) except Exception as e: raise RuntimeError(f"Failed to load model: {str(e)}") def get_embedding(self, text: Union[str, List[str]]) -> List[List[float]]: if self.model is None: self.load_model() if isinstance(text, str): text = [text] try: embeddings = self.model.encode(text) return [embedding.tolist() for embedding in embeddings] except Exception as e: raise RuntimeError(f"Failed to generate embeddings: {str(e)}") embedding_model = EmbeddingModel()