Software_Engineer_Agent / backend /memory /embedding_service.py
G-Madhuri's picture
deploy to hf space
7e2f74d
Raw
History Blame Contribute Delete
1.9 kB
import os
import logging
from typing import List, Optional
logger = logging.getLogger("embedding_service")
class EmbeddingService:
def __init__(self, api_key: Optional[str] = None):
self.api_key = api_key or os.environ.get("GEMINI_API_KEY")
if not self.api_key:
raise ValueError("Gemini API key is required to generate embeddings.")
from google import genai
self.client = genai.Client(api_key=self.api_key)
def embed_text(self, text: str) -> List[float]:
"""Generates embedding for a single text string."""
try:
response = self.client.models.embed_content(
model='text-embedding-004',
contents=text
)
if response.embeddings and len(response.embeddings) > 0:
return response.embeddings[0].values
raise ValueError("No embeddings returned from Gemini API.")
except Exception as e:
logger.error(f"Error generating embedding: {e}")
raise e
def embed_texts(self, texts: List[str]) -> List[List[float]]:
"""Generates embeddings for a batch list of text strings."""
if not texts:
return []
try:
# Check length to prevent massive batch issues; text-embedding-004 supports bulk
response = self.client.models.embed_content(
model='text-embedding-004',
contents=texts
)
if response.embeddings and len(response.embeddings) == len(texts):
return [e.values for e in response.embeddings]
elif response.embeddings:
return [e.values for e in response.embeddings]
raise ValueError("No embeddings returned from batch API call.")
except Exception as e:
logger.error(f"Error generating batch embeddings: {e}")
raise e