Production_Rag / embedder.py
TharaKavin's picture
Upload 17 files
6f94597 verified
Raw
History Blame Contribute Delete
1.03 kB
import numpy as np
from typing import List, Optional
from sentence_transformers import SentenceTransformer
class Embedder:
def __init__(self, model_name: str = "BAAI/bge-small-en-v1.5", device: str = "cpu"):
self.model = SentenceTransformer(model_name, device=device)
try:
self.dim = self.model.get_embedding_dimension()
except AttributeError:
self.dim = self.model.get_sentence_embedding_dimension()
def embed(self, texts: List[str], batch_size: int = 32) -> np.ndarray:
if not texts:
return np.empty((0, self.dim), dtype=np.float32)
embeddings = self.model.encode(
texts,
normalize_embeddings=True,
show_progress_bar=False,
batch_size=batch_size,
)
return np.asarray(embeddings, dtype=np.float32)
def embed_query(self, query: str) -> np.ndarray:
emb = self.embed([query])
return emb[0]
@property
def dimension(self) -> int:
return self.dim