gsearch-api / config.py
tanmayapna's picture
initial deploy
6fc17e7
Raw
History Blame
2.44 kB
"""
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()