Spaces:
Sleeping
Sleeping
| """MiniCPM-Embedding client — runs on Modal GPU (NF4 4-bit).""" | |
| from typing import List | |
| from config import settings | |
| from models.modal_client import get_embedder | |
| class MiniCPMEmbedder: | |
| def __init__(self): | |
| self._remote = get_embedder() | |
| def embed_documents(self, texts: List[str]) -> List[List[float]]: | |
| if not texts: | |
| return [] | |
| batch_size = settings.EMBED_BATCH_SIZE | |
| if len(texts) <= batch_size: | |
| return self._remote.embed_documents.remote(texts) | |
| vectors: List[List[float]] = [] | |
| for start in range(0, len(texts), batch_size): | |
| batch = texts[start : start + batch_size] | |
| vectors.extend(self._remote.embed_documents.remote(batch)) | |
| return vectors | |
| def embed_query(self, query: str) -> List[float]: | |
| return self._remote.embed_query.remote(query) | |
| def get_embedding_dim(self) -> int: | |
| return 2304 | |