Rag-api / app /state.py
Kaave19's picture
Deploy FastAPI RAG Space
60d8fe7 verified
Raw
History Blame Contribute Delete
1.02 kB
from dataclasses import dataclass
from app.config import Settings
from app.pipeline.embedder import SentenceTransformerEmbedder
from app.pipeline.generator import HuggingFaceGenerator
from app.pipeline.vector_store import FaissDocumentStore
@dataclass
class AppState:
settings: Settings
embedder: SentenceTransformerEmbedder
generator: HuggingFaceGenerator
vector_store: FaissDocumentStore
@classmethod
def from_settings(cls, settings: Settings) -> "AppState":
data_dir = settings.data_dir
data_dir.mkdir(parents=True, exist_ok=True)
embedder = SentenceTransformerEmbedder(settings.embedding_model)
return cls(
settings=settings,
embedder=embedder,
generator=HuggingFaceGenerator(
api_key=settings.hf_api_key,
model=settings.generation_model,
timeout_seconds=settings.hf_timeout_seconds,
),
vector_store=FaissDocumentStore(data_dir=data_dir),
)