Spaces:
Running on Zero
Running on Zero
File size: 1,109 Bytes
5c5c456 b680e04 5c5c456 b680e04 5c5c456 b680e04 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | from __future__ import annotations
from typing import Optional, List
from src.config import settings
from src.logger import logger
class _STEmbeddings:
"""Minimal LangChain-compatible embeddings via sentence-transformers."""
def __init__(self, model_name: str):
from sentence_transformers import SentenceTransformer
self.model_name = model_name
self._model = SentenceTransformer(model_name)
def embed_documents(self, texts: List[str]) -> List[List[float]]:
return self._model.encode(texts, show_progress_bar=False).tolist()
def embed_query(self, text: str) -> List[float]:
return self._model.encode([text], show_progress_bar=False)[0].tolist()
# LangChain / Chroma sometimes call this
def __call__(self, text: str) -> List[float]:
return self.embed_query(text)
def get_embeddings(model: Optional[str] = None):
model_name = model or settings.embedding_model or "sentence-transformers/all-MiniLM-L6-v2"
logger.info("Using SentenceTransformer embeddings", context={"model": model_name})
return _STEmbeddings(model_name) |