from fastapi import FastAPI, Request from pydantic import BaseModel from sentence_transformers import SentenceTransformer from typing import List import uvicorn app = FastAPI() # Load model once on startup model = SentenceTransformer('lighteternal/stsb-xlm-r-greek-transfer') # Request schema class EmbeddingRequest(BaseModel): texts: List[str] # Health check endpoint @app.get("/") async def root(): return {"message": "Embedding API is running."} # Embedding endpoint @app.post("/get_sim_text") def get_sim_text_endpoint(request: TextPairRequest): try: # Embed the claim text claim_embedding = similarity_model.model.encode( request.claim, convert_to_tensor=True, show_progress_bar=False ) # Call get_sim_text with defaults (min_threshold=0.4, chunk_size=1500) results = similarity_model.get_sim_text( request.text, claim_embedding ) return {"result": results} except Exception as e: return {"error": str(e)} # Optional for local testing if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=7860)