Spaces:
Sleeping
Sleeping
| from sentence_transformers import SentenceTransformer | |
| from typing import List | |
| import numpy as np | |
| from backend.app.config import settings | |
| class EmbeddingService: | |
| def __init__(self): | |
| self.model = SentenceTransformer(settings.EMBEDDING_MODEL) | |
| self.dimension = 384 | |
| def embed_text(self, text: str) -> List[float]: | |
| embedding = self.model.encode(text, convert_to_numpy=True) | |
| return embedding.tolist() | |
| def embed_batch(self, texts: List[str]) -> List[List[float]]: | |
| embeddings = self.model.encode(texts, convert_to_numpy=True, batch_size=32) | |
| return embeddings.tolist() | |
| def calculate_similarity( | |
| self, embedding1: List[float], embedding2: List[float] | |
| ) -> float: | |
| vec1 = np.array(embedding1) | |
| vec2 = np.array(embedding2) | |
| dot_product = np.dot(vec1, vec2) | |
| norm1 = np.linalg.norm(vec1) | |
| norm2 = np.linalg.norm(vec2) | |
| return float(dot_product / (norm1 * norm2)) | |
| embedding_service = EmbeddingService() | |