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() |