File size: 910 Bytes
905e3b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from sentence_transformers import SentenceTransformer
from app.config import settings
import numpy as np
from typing import List

class EmbeddingManager:
    """Manage local embeddings (no API cost)"""
    
    def __init__(self):
        self.model = SentenceTransformer(settings.EMBEDDING_MODEL)
        self.dimension = self.model.get_sentence_embedding_dimension()
        print(f"✅ Loaded embedding model: {settings.EMBEDDING_MODEL} (dim: {self.dimension})")
    
    def embed_texts(self, texts: List[str]) -> List[List[float]]:
        """Generate embeddings for list of texts"""
        embeddings = self.model.encode(texts, convert_to_numpy=True)
        return embeddings.tolist()
    
    def embed_query(self, query: str) -> List[float]:
        """Generate embedding for a single query"""
        embedding = self.model.encode([query], convert_to_numpy=True)
        return embedding[0].tolist()