File size: 1,134 Bytes
d98e0ba
 
5b8ca02
 
 
a2428a8
 
dd1a0b9
b80b0ac
a0d25c9
 
dd1a0b9
24b77c3
 
d98e0ba
 
 
dd1a0b9
ad15583
d552e9c
 
d98e0ba
 
 
 
 
 
5b8ca02
 
 
d552e9c
5b8ca02
a0d25c9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
import os

# 📁 Rediriger les caches HF vers un dossier autorisé
CACHE_DIR = "/data"
os.environ["HF_HOME"] = CACHE_DIR
os.environ["TRANSFORMERS_CACHE"] = CACHE_DIR
os.environ["HF_MODULES_CACHE"] = CACHE_DIR  # ✅ <--- ajoute cette ligne
os.environ["HF_HUB_CACHE"] = CACHE_DIR


app = FastAPI()

# ✅ Modèle avec custom code
MODEL_NAME = "nomic-ai/nomic-embed-text-v1"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=CACHE_DIR, trust_remote_code=True)
model = AutoModel.from_pretrained(MODEL_NAME, cache_dir=CACHE_DIR, trust_remote_code=True)

class EmbedInput(BaseModel):
    text: str

@app.post("/embed")
async def embed_text(payload: EmbedInput):
    inputs = tokenizer(payload.text, return_tensors="pt", padding=True, truncation=True)
    with torch.no_grad():
        outputs = model(**inputs)
        embeddings = outputs.last_hidden_state[:, 0]
        normalized = F.normalize(embeddings, p=2, dim=1)
    return {"embedding": normalized[0].tolist()}