amana / src /embed.py
Misbahuddin's picture
Pivot YouTube RAG scaffold into Amana — T&S triage copilot (Phases 1–3.6)
250666a
Raw
History Blame Contribute Delete
935 Bytes
"""Local sentence-transformers embeddings (free, no API calls)."""
from __future__ import annotations
import os
from functools import lru_cache
from .config import CONFIG
# Quiet the HF/transformers/tokenizers progress bars and warnings so CLI and Streamlit
# output stays readable. Set before the libraries are imported.
os.environ.setdefault("HF_HUB_DISABLE_PROGRESS_BARS", "1")
os.environ.setdefault("TRANSFORMERS_VERBOSITY", "error")
os.environ.setdefault("TOKENIZERS_PARALLELISM", "false")
@lru_cache(maxsize=1)
def _model():
from sentence_transformers import SentenceTransformer
return SentenceTransformer(CONFIG.embed_model)
def embed_texts(texts: list[str]) -> list[list[float]]:
model = _model()
vecs = model.encode(texts, normalize_embeddings=True, show_progress_bar=len(texts) > 64)
return [v.tolist() for v in vecs]
def embed_query(text: str) -> list[float]:
return embed_texts([text])[0]