FinSightAI / backend /models /embedder.py
Aniket2003333333's picture
start
7248d39
Raw
History Blame Contribute Delete
927 Bytes
"""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