Spaces:
Running on Zero
Running on Zero
| """Encode text chunks into dense vectors using SentenceTransformers.""" | |
| import numpy as np | |
| from sentence_transformers import SentenceTransformer | |
| from config import EMBEDDING_MODEL | |
| _model = None # lazy singleton | |
| def get_embedding_model() -> SentenceTransformer: | |
| global _model | |
| if _model is None: | |
| print(f"[embeddings] Loading embedding model: {EMBEDDING_MODEL}") | |
| _model = SentenceTransformer(EMBEDDING_MODEL) | |
| return _model | |
| def embed_texts(texts: list[str]) -> np.ndarray: | |
| """Return a (N, D) float32 array of embeddings.""" | |
| model = get_embedding_model() | |
| embeddings = model.encode(texts, show_progress_bar=True, convert_to_numpy=True) | |
| return embeddings.astype("float32") | |
| def embed_query(query: str) -> np.ndarray: | |
| """Return a (1, D) float32 array for a single query.""" | |
| model = get_embedding_model() | |
| vec = model.encode([query], convert_to_numpy=True) | |
| return vec.astype("float32") | |