mirror of
https://github.com/Sosokker/plain-rag.git
synced 2025-12-18 14:34:05 +01:00
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
from contextlib import asynccontextmanager
|
|
|
|
from dotenv import load_dotenv
|
|
from fastapi import FastAPI
|
|
from structlog import get_logger
|
|
|
|
from app.api import endpoints
|
|
from app.services.config_service import ConfigService
|
|
from app.services.rag_service import RAGService
|
|
from app.services.vector_stores import PGVectorStore
|
|
|
|
logger = get_logger()
|
|
|
|
load_dotenv()
|
|
|
|
app_state = {}
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI): # noqa: ARG001
|
|
config_service = ConfigService()
|
|
await config_service.initialize_models()
|
|
app_state["config_service"] = config_service
|
|
|
|
logger.info("Application starting up...")
|
|
embedding_model = config_service.get_current_embedding_model()
|
|
reranker = config_service.get_current_reranker_model()
|
|
if embedding_model is None:
|
|
raise RuntimeError("Embedding model failed to initialize")
|
|
app_state["rag_service"] = RAGService(
|
|
embedding_model=embedding_model,
|
|
vector_db=PGVectorStore(),
|
|
reranker=reranker,
|
|
)
|
|
yield
|
|
|
|
|
|
app = FastAPI(lifespan=lifespan)
|
|
|
|
app.include_router(endpoints.router)
|
|
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {"message": "Welcome to the Custom RAG API"}
|