from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") # Modal inference (all models run on Modal GPU — nothing loaded locally) MODAL_APP_NAME: str = "finsight-ai" # FAISS vector store (local, persisted to disk) FAISS_DATA_DIR: str = "./data/faiss" # RAG settings TOP_K: int = 6 CHUNK_SIZE: int = 512 CHUNK_OVERLAP: int = 64 HYBRID_ALPHA: float = 0.6 # Ingestion — keep large PDF uploads fast (Modal chart OCR is slow per page) CHART_OCR_MAX_PAGES: int = 3 CHART_OCR_MAX_TEXT_CHARS: int = 1200 EMBED_BATCH_SIZE: int = 32 # SQLite chat sessions CHAT_DB_PATH: str = "./data/chat_sessions.db" settings = Settings()