from pathlib import Path from pydantic import BaseModel import os class Settings(BaseModel): ROOT: Path = Path(".") DATA_DIR: Path = ROOT / "backend" / "data" RAW_DIR: Path = DATA_DIR / "raw" PROCESSED_DIR: Path = DATA_DIR / "processed" INDEX_DIR: Path = ROOT / "backend" / "index" MODEL_DIR: Path = ROOT / "backend" / "models" EMBEDDING_MODEL_ID: str = "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2" RERANK_MODEL_ID: str = "BAAI/bge-reranker-v2-m3" LLM_REPO_ID: str = "Qwen/Qwen2.5-1.5B-Instruct-GGUF" LLM_FILENAME_PATTERN: str = "Qwen2.5-1.5B-Instruct-Q4_K_M.gguf" LLM_PATH: Path = MODEL_DIR / "qwen2.5-1.5b-gguf" / "Qwen2.5-1.5B-Instruct-Q4_K_M.gguf" N_CHARS_CHUNK: int = 2000 N_CHARS_OVERLAP: int = 300 TOP_K: int = 8 TOP_K_RERANK: int = 3 LLM_N_CTX: int = 3072 LLM_N_GPU_LAYERS: int = 0 HF_TOKEN: str | None = ( os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") or os.getenv("study") ) settings = Settings()