CoolFace
Apppublic

Aigenthix/Graph_RAG

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
embedding_service.py45 linesDownload Raw Back to services
1"""Embedding generation service"""2 3from typing import List, Dict, Any4from sentence_transformers import SentenceTransformer5import logging6 7logger = logging.getLogger(__name__)8 9 10class EmbeddingService:11    """Service for generating text embeddings"""12 13    def __init__(self, model_name: str = "all-MiniLM-L6-v2"):14        self.model_name = model_name15        self.model = SentenceTransformer(model_name)16        logger.info(f"Loaded embedding model: {model_name}")17 18    def embed_text(self, text: str) -> List[float]:19        """Generate embedding for single text"""20        embedding = self.model.encode(text, convert_to_tensor=False)21        return embedding.tolist()22 23    def embed_batch(self, texts: List[str]) -> List[List[float]]:24        """Generate embeddings for multiple texts"""25        embeddings = self.model.encode(texts, convert_to_tensor=False)26        return embeddings.tolist()27 28    def embed_chunks(29        self,30        chunks: List[Dict[str, Any]],31    ) -> List[Dict[str, Any]]:32        """Generate embeddings for document chunks"""33        texts = [chunk["text"] for chunk in chunks]34        embeddings = self.embed_batch(texts)35 36        for chunk, embedding in zip(chunks, embeddings):37            chunk["embedding"] = embedding38 39        logger.info(f"Generated embeddings for {len(chunks)} chunks")40        return chunks41 42    def get_model_dimension(self) -> int:43        """Get embedding dimension"""44        return self.model.get_sentence_embedding_dimension()45