File size: 1,001 Bytes
8201032
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
35
36
37
38
39
40
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from embedding_engine import IndonesianEmbeddingEngine
from typing import List
import time

app = FastAPI(title="Indonesian Embedding Service")

engine = IndonesianEmbeddingEngine()

class EmbedRequest(BaseModel):
    texts: List[str]

class EmbedResponse(BaseModel):
    embeddings: List[List[float]]
    dimension: int
    model: str
    elapsed_ms: float

@app.post("/embed", response_model=EmbedResponse)
def embed(req: EmbedRequest):
    if not req.texts or len(req.texts) == 0:
        raise HTTPException(status_code=400, detail="texts required")
    
    start = time.time()

    embeddings = engine.embed(req.texts)

    elapsed = (time.time() - start) * 1000

    return {
        "embeddings": embeddings,
        "dimension": len(embeddings[0]),
        "model": "asmud/indonesian-embedding-small (onnx)",
        "elapsed_ms": round(elapsed, 2),
    }

@app.get("/health")
def health():
    return {"status": "ok"}