Spaces:
Running
Running
| from typing import List | |
| from functools import lru_cache | |
| import numpy as np | |
| from sentence_transformers import SentenceTransformer | |
| class EmbeddingService: | |
| def __init__(self, model_name: str) -> None: | |
| self.model = SentenceTransformer(model_name) | |
| def encode(self, texts: List[str]) -> np.ndarray: | |
| vectors = self.model.encode( | |
| texts, | |
| normalize_embeddings=True, | |
| show_progress_bar=False, | |
| convert_to_numpy=True, | |
| ) | |
| return np.asarray(vectors, dtype=np.float32) | |
| def encode_query_cached(self, text: str) -> bytes: | |
| vec = self.model.encode( | |
| [text], | |
| normalize_embeddings=True, | |
| show_progress_bar=False, | |
| convert_to_numpy=True, | |
| ) | |
| arr = np.asarray(vec, dtype=np.float32) | |
| return arr.tobytes() | |
| def encode_query(self, text: str) -> np.ndarray: | |
| buf = self.encode_query_cached(text) | |
| return np.frombuffer(buf, dtype=np.float32).reshape(1, -1) | |