Spaces:
Running
Running
| """ | |
| Infrastructure - Sentence Transformers Embedding Service | |
| """ | |
| from typing import List | |
| from sentence_transformers import SentenceTransformer | |
| from app.domain.interfaces import IEmbedder | |
| class SentenceTransformerEmbedder(IEmbedder): | |
| """Sentence Transformers embedding implementation""" | |
| def __init__(self, model_name: str = "all-MiniLM-L6-v2"): | |
| self.model_name = model_name | |
| self.model = SentenceTransformer(model_name) | |
| self.dimension = self.model.get_sentence_embedding_dimension() | |
| async def embed_text(self, text: str) -> List[float]: | |
| """Generate embedding for single text""" | |
| embedding = self.model.encode(text, convert_to_numpy=True) | |
| return embedding.tolist() | |
| async def embed_texts(self, texts: List[str]) -> List[List[float]]: | |
| """Generate embeddings for multiple texts""" | |
| embeddings = self.model.encode(texts, convert_to_numpy=True, show_progress_bar=False) | |
| return embeddings.tolist() | |
| def get_dimension(self) -> int: | |
| """Get embedding dimension""" | |
| return self.dimension | |