Spaces:
Sleeping
Sleeping
File size: 1,015 Bytes
4d592a4 4ba4b25 4d592a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
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()
|