""" GCAS Search Engine – Configuration All values can be overridden via environment variables or a .env file. """ from __future__ import annotations from typing import Optional from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", extra="ignore") # ------------------------------------------------------------------ # Data paths # ------------------------------------------------------------------ # Folder that contains the .xlsx files to index excel_folder: str = "./data" # Where FAISS indexes + pickle cache are stored between restarts index_cache_folder: str = "./index_cache" # ------------------------------------------------------------------ # Embeddings ("local" = sentence-transformers, "openai" = OpenAI API) # ------------------------------------------------------------------ embedding_provider: str = "local" # Multilingual model supports English + Hindi + Gujarati (50+ languages). # Produces 384-dim vectors – compatible with existing FAISS indexes. # Switch to "all-MiniLM-L6-v2" if you only need English. local_embedding_model: str = "paraphrase-multilingual-MiniLM-L12-v2" # Model used when embedding_provider == "openai" openai_embedding_model: str = "text-embedding-3-small" # ------------------------------------------------------------------ # LLM reranker ("openai" | "anthropic") # ------------------------------------------------------------------ llm_provider: str = "openai" llm_model: str = "gpt-4o-mini" # ------------------------------------------------------------------ # API keys (can also be passed per-request) # ------------------------------------------------------------------ openai_api_key: Optional[str] = None anthropic_api_key: Optional[str] = None # ------------------------------------------------------------------ # Search defaults # ------------------------------------------------------------------ default_top_k: int = 10 # How many FAISS candidates to gather before LLM reranking rerank_pool_size: int = 50 # ------------------------------------------------------------------ # Server # ------------------------------------------------------------------ api_host: str = "0.0.0.0" api_port: int = 8000 settings = Settings()