Spaces:
Running on Zero
Running on Zero
Download src/embedding_model.py from kaustuvkunal/pdf-rag: direct link, hf CLI and curl.
- Browser
- Download file 1.11 kB
-
https://huggingface.co/spaces/kaustuvkunal/pdf-rag/resolve/main/src/embedding_model.py
- Command line
-
hf download hf://spaces/kaustuvkunal/pdf-rag/src/embedding_model.py
-
curl -L -o embedding_model.py https://huggingface.co/spaces/kaustuvkunal/pdf-rag/resolve/main/src/embedding_model.py
1.11 kB
| 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) |