# 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 rag.db.initializer import initialize from rag.service.search import search templates = Jinja2Templates(directory="templates") @asynccontextmanager async def lifespan(_app: FastAPI): initialize() 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})