# rag/app.py from contextlib import asynccontextmanager from fastapi import FastAPI, Request, Form from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from api.endpoints import router from db.initializer import initialize_dbs from models.initializer import initialize_models from service.search import search templates = Jinja2Templates(directory="templates") @asynccontextmanager async def lifespan(app: FastAPI): initialize_dbs() initialize_models(app) yield app = FastAPI(lifespan=lifespan) app.include_router(router) @app.get("/", response_class=HTMLResponse) def index(request: Request): return templates.TemplateResponse("index.html", {"request": request, "results": None}) @app.post("/demo", response_class=HTMLResponse) def demo(request: Request, query: str = Form(...)): results = search(query) return templates.TemplateResponse("index.html", {"request": request, "results": results, "query": query})