Spaces:
Runtime error
Runtime error
import os | |
from sentence_transformers import SentenceTransformer | |
from extensions.openai.utils import float_list_to_base64, debug_msg | |
from extensions.openai.errors import * | |
st_model = os.environ["OPENEDAI_EMBEDDING_MODEL"] if "OPENEDAI_EMBEDDING_MODEL" in os.environ else "all-mpnet-base-v2" | |
embeddings_model = None | |
def load_embedding_model(model): | |
try: | |
emb_model = SentenceTransformer(model) | |
print(f"\nLoaded embedding model: {model}, max sequence length: {emb_model.max_seq_length}") | |
except Exception as e: | |
print(f"\nError: Failed to load embedding model: {model}") | |
raise ServiceUnavailableError(f"Error: Failed to load embedding model: {model}", internal_message=repr(e)) | |
return emb_model | |
def get_embeddings_model(): | |
global embeddings_model, st_model | |
if st_model and not embeddings_model: | |
embeddings_model = load_embedding_model(st_model) # lazy load the model | |
return embeddings_model | |
def get_embeddings_model_name(): | |
global st_model | |
return st_model | |
def embeddings(input: list, encoding_format: str): | |
embeddings = get_embeddings_model().encode(input).tolist() | |
if encoding_format == "base64": | |
data = [{"object": "embedding", "embedding": float_list_to_base64(emb), "index": n} for n, emb in enumerate(embeddings)] | |
else: | |
data = [{"object": "embedding", "embedding": emb, "index": n} for n, emb in enumerate(embeddings)] | |
response = { | |
"object": "list", | |
"data": data, | |
"model": st_model, # return the real model | |
"usage": { | |
"prompt_tokens": 0, | |
"total_tokens": 0, | |
} | |
} | |
debug_msg(f"Embeddings return size: {len(embeddings[0])}, number: {len(embeddings)}") | |
return response | |