Download src/embeddings.py from VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM: direct link, hf CLI and curl.
- Browser
- Download file 1.1 kB
-
https://huggingface.co/spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/resolve/main/src/embeddings.py
- Command line
-
hf download hf://spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/src/embeddings.py
-
curl -L -o embeddings.py https://huggingface.co/spaces/VLAI-AIVN/AIO2025M12_Project_Simple_NotebookLM/resolve/main/src/embeddings.py
1.1 kB
| """Local embeddings via Sentence-Transformers (no inference provider).""" | |
| from __future__ import annotations | |
| from functools import lru_cache | |
| from langchain_core.embeddings import Embeddings | |
| from sentence_transformers import SentenceTransformer | |
| from src.config import settings | |
| def _model() -> SentenceTransformer: | |
| return SentenceTransformer(settings.embedding_model) | |
| class LocalSentenceTransformerEmbeddings(Embeddings): | |
| def embed_documents(self, texts: list[str]) -> list[list[float]]: # type: ignore[override] | |
| vecs = _model().encode(texts, normalize_embeddings=True) | |
| tolist = getattr(vecs, "tolist", None) | |
| return tolist() if callable(tolist) else [list(map(float, v)) for v in vecs] | |
| def embed_query(self, text: str) -> list[float]: # type: ignore[override] | |
| vec = _model().encode([text], normalize_embeddings=True)[0] | |
| tolist = getattr(vec, "tolist", None) | |
| return tolist() if callable(tolist) else [float(x) for x in vec] | |
| def get_embeddings() -> Embeddings: | |
| return LocalSentenceTransformerEmbeddings() | |