Sathvik-kota's picture
Upload folder using huggingface_hub
1f9de36 verified
raw
history blame contribute delete
971 Bytes
# src/search_service/app.py
from fastapi import FastAPI
from pydantic import BaseModel
from src.search_service.indexer import FAISSIndexer
import numpy as np
app = FastAPI(title="Search Service")
indexer = FAISSIndexer()
# attempt load if exists
indexer.try_load()
class BuildIndexRequest(BaseModel):
embeddings: list
meta: dict
@app.post("/build_index")
def build_index(req: BuildIndexRequest):
embeddings = np.array(req.embeddings, dtype="float32")
indexer.build(embeddings, req.meta)
return {"status": "index_built", "count": embeddings.shape[0]}
class SearchRequest(BaseModel):
query_embedding: list
top_k: int = 5
@app.post("/search_vectors")
def search_vectors(req: SearchRequest):
if indexer.index is None:
return {"error": "index_not_built"}
query = np.array(req.query_embedding, dtype="float32")
scores, ids = indexer.search(query, req.top_k)
return {"scores": scores, "ids": ids, "meta": indexer.meta}