| from fastapi import FastAPI, Request, Query |
| from fastapi.templating import Jinja2Templates |
| from sentence_transformers import SentenceTransformer |
| import faiss |
| import numpy as np |
|
|
| app = FastAPI() |
| model = SentenceTransformer('paraphrase-MiniLM-L6-v2') |
| index = faiss.IndexFlatL2(384) |
|
|
| templates = Jinja2Templates(directory=".") |
|
|
| @app.get("/") |
| def read_root(request: Request): |
| return templates.TemplateResponse("index.html", {"request": request}) |
|
|
| @app.post("/embed") |
| def embed_string(query: str)): |
| embedding = model.encode([query]) |
| index.add(np.array(embedding)) |
| return {"message": "String embedded and added to FAISS database"} |
|
|
| @app.post("/search") |
| def search_string(query: str, n: int = 5): |
| embedding = model.encode([text]) |
| distances, indices = index.search(np.array(embedding), n) |
| return {"distances": distances[0].tolist(), "indices": indices[0].tolist()} |
|
|