vanifala commited on
Commit
4fdabcd
·
verified ·
1 Parent(s): f1ed9ae

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +48 -0
app.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Embedding Server (sentence-transformers) for HuggingFace Spaces."""
2
+ import os
3
+ from fastapi import FastAPI
4
+ from pydantic import BaseModel
5
+ from sentence_transformers import SentenceTransformer
6
+
7
+ MODEL_NAME = os.environ.get("MODEL_NAME", "sentence-transformers/multi-qa-MiniLM-L6-cos-v1")
8
+ print(f"[Embedding] Loading model: {MODEL_NAME}...", flush=True)
9
+ model = SentenceTransformer(MODEL_NAME)
10
+ print("[Embedding] Model loaded.", flush=True)
11
+
12
+ app = FastAPI()
13
+
14
+
15
+ class EmbedRequest(BaseModel):
16
+ text: str | list[str]
17
+ normalize: bool = True
18
+
19
+
20
+ class BatchEmbedRequest(BaseModel):
21
+ texts: list[str]
22
+ normalize: bool = True
23
+
24
+
25
+ @app.get("/health")
26
+ def health():
27
+ return {"status": "ok", "model": MODEL_NAME}
28
+
29
+
30
+ @app.post("/embed")
31
+ def embed(req: EmbedRequest):
32
+ texts = [req.text] if isinstance(req.text, str) else req.text
33
+ embeddings = model.encode(texts, normalize_embeddings=req.normalize)
34
+ return {
35
+ "embeddings": embeddings.tolist(),
36
+ "model": MODEL_NAME,
37
+ "dimensions": embeddings.shape[1],
38
+ }
39
+
40
+
41
+ @app.post("/embed_batch")
42
+ def embed_batch(req: BatchEmbedRequest):
43
+ embeddings = model.encode(req.texts, normalize_embeddings=req.normalize)
44
+ return {
45
+ "embeddings": embeddings.tolist(),
46
+ "model": MODEL_NAME,
47
+ "dimensions": embeddings.shape[1],
48
+ }