File size: 989 Bytes
2ea1d2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()