Spaces:
Sleeping
Sleeping
| import numpy as np | |
| from typing import List, Optional | |
| from sentence_transformers import SentenceTransformer | |
| class Embedder: | |
| def __init__(self, model_name: str = "BAAI/bge-small-en-v1.5", device: str = "cpu"): | |
| self.model = SentenceTransformer(model_name, device=device) | |
| try: | |
| self.dim = self.model.get_embedding_dimension() | |
| except AttributeError: | |
| self.dim = self.model.get_sentence_embedding_dimension() | |
| def embed(self, texts: List[str], batch_size: int = 32) -> np.ndarray: | |
| if not texts: | |
| return np.empty((0, self.dim), dtype=np.float32) | |
| embeddings = self.model.encode( | |
| texts, | |
| normalize_embeddings=True, | |
| show_progress_bar=False, | |
| batch_size=batch_size, | |
| ) | |
| return np.asarray(embeddings, dtype=np.float32) | |
| def embed_query(self, query: str) -> np.ndarray: | |
| emb = self.embed([query]) | |
| return emb[0] | |
| def dimension(self) -> int: | |
| return self.dim | |