Spaces:
Running
Running
| from openai import OpenAI | |
| from config import settings | |
| from typing import List, Tuple, Optional | |
| class BGEM3Embedder: | |
| """Wraps the NVIDIA serverless BGE-M3 endpoint.""" | |
| MODEL = "baai/bge-m3" | |
| def __init__(self): | |
| self.client = OpenAI( | |
| api_key=settings.NVIDIA_NIM_API, | |
| base_url="https://integrate.api.nvidia.com/v1", | |
| ) | |
| def embed(self, text: str) -> List[float]: | |
| response = self.client.embeddings.create( | |
| input=[text], | |
| model=self.MODEL, | |
| encoding_format="float", | |
| extra_body={"truncate": "END"}, # truncate instead of error on long text | |
| ) | |
| return response.data[0].embedding | |
| def embed_many(self, texts: List[str]) -> List[List[float]]: | |
| response = self.client.embeddings.create( | |
| input=texts, | |
| model=self.MODEL, | |
| encoding_format="float", | |
| extra_body={"truncate": "END"}, | |
| ) | |
| return [d.embedding for d in response.data] |