TextEmbeddings / utils_model.py
DanielIglesias97's picture
We have changed the embeddings' model that was being used with one
08d728e
import numpy as np
import pandas as pd
from sentence_transformers import SentenceTransformer
class ModelFactory():
def __init__(self):
pass
def create_model(self, model_type):
model = None
if (model_type=='all-MiniLM-L6-v2'):
model = MiniLM_L6_v2_Model()
if (model_type=='sentence_similarity_spanish'):
model = SentenceSimilaritySpanishModel()
if (model_type=='multilingual-e5-large-ft-sts-spanish-matryoshka-768-64-5e'):
model = Multilingual_E5_Large_Ft_Sts_Spanish_Matryoshka()
return model
class BaseModel():
def __init__(self):
pass
def retrieve_embeddings_from_single_input_text(self, input_text):
embeddings = self.model.encode(input_text, batch_size=32)
embeddings = embeddings.astype(np.float16).astype(str).tolist()
return embeddings
def retrieve_embeddings_from_texts_list(self, input_texts_list, limitnoffeatures=-1):
all_embeddings_list = []
for current_input_text_aux in input_texts_list:
embeddings = self.retrieve_embeddings_from_single_input_text(current_input_text_aux)
nof_features = len(embeddings[0])
all_embeddings_list += [current_input_text_aux.tolist() + embeddings[0]]
queries_embeddings_df = pd.DataFrame(all_embeddings_list)
columns_list = ['text'] + [f'feature_{idx}' for idx in range(0, nof_features)]
queries_embeddings_df.columns = columns_list
if (limitnoffeatures>-1):
columns_to_choose = queries_embeddings_df.columns[0:limitnoffeatures+1]
queries_embeddings_df = queries_embeddings_df[columns_to_choose]
return queries_embeddings_df
class MiniLM_L6_v2_Model(BaseModel):
def __init__(self):
self.model = SentenceTransformer('all-MiniLM-L6-v2')
class SentenceSimilaritySpanishModel(BaseModel):
def __init__(self):
self.model = SentenceTransformer('hiiamsid/sentence_similarity_spanish_es')
class Multilingual_E5_Large_Ft_Sts_Spanish_Matryoshka(BaseModel):
def __init__(self):
self.model = SentenceTransformer('mrm8488/multilingual-e5-large-ft-sts-spanish-matryoshka-768-64-5e')