# file: vector/embeddings.py from sentence_transformers import SentenceTransformer import numpy as np from app.config import EMBEDDING_MODEL, EMBEDDING_DIM class EmbeddingModel: """Manages sentence transformer embeddings""" def __init__(self): self.model = None self._load_model() def _load_model(self): """Load the embedding model""" try: self.model = SentenceTransformer(EMBEDDING_MODEL) except Exception as e: print(f"Warning: Could not load embedding model: {e}") # Fallback to random embeddings for testing self.model = None def encode(self, texts): """Encode texts to embeddings""" if self.model: embeddings = self.model.encode(texts, normalize_embeddings=True) return embeddings else: # Fallback: random embeddings return np.random.randn(len(texts), EMBEDDING_DIM).astype(np.float32) # Singleton _embedding_model = None def get_embedding_model(): global _embedding_model if _embedding_model is None: _embedding_model = EmbeddingModel() return _embedding_model