"""Configuration settings, environment variables, and constants.""" import os from dotenv import load_dotenv load_dotenv() # Environment Variables ZILLIZ_BEARER = os.getenv("ZILLIZ_BEARER") ZILLIZ_ENDPOINT = os.getenv("ZILLIZ_ENDPOINT") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") # App Constants # Note: TOTAL_GALAXIES is dynamically updated from Zilliz at startup (see app.py) # This is just a fallback default value TOTAL_GALAXIES = 0 DEFAULT_TOP_K = 300 DEFAULT_DISPLAY_COUNT = 60 LOAD_MORE_COUNT = 120 # Zilliz Configuration ZILLIZ_COLLECTION_NAME = "legacy" # Image search always uses legacy collection which has pre-existing embeddings ZILLIZ_IMAGE_SEARCH_COLLECTION_NAME = ZILLIZ_COLLECTION_NAME # Collection-specific configurations COLLECTION_CONFIGS = { "legacy": { "anns_field": "aion_search_embedding", "primary_key": "object_id", "output_fields": ["object_id", "ra", "dec", "r_mag"] }, "aionsearch": { "anns_field": "clip_embedding", "primary_key": "ra_dec", "output_fields": ["ra_dec", "ra", "dec", "r_mag"] } } # Get configuration for the selected collection _collection_config = COLLECTION_CONFIGS.get(ZILLIZ_COLLECTION_NAME, COLLECTION_CONFIGS[ZILLIZ_COLLECTION_NAME]) ZILLIZ_ANNS_FIELD = _collection_config["anns_field"] ZILLIZ_PRIMARY_KEY = _collection_config["primary_key"] ZILLIZ_OUTPUT_FIELDS = _collection_config["output_fields"] # OpenAI Configuration OPENAI_EMBEDDING_MODEL = "text-embedding-3-large" # CLIP Model Configuration CLIP_EMBEDDING_DIM = 1024 CLIP_NORMALIZE_EPS = 1e-3 # UI Configuration IMAGE_HEIGHT = "160px" IMAGE_WIDTH = "100%" CUTOUT_FOV = 0.025 CUTOUT_SIZE = 256 # URL State Configuration URL_STATE_PARAM = "s" # Query parameter name for encoded state # Logging Configuration VCU_COST_PER_MILLION = 4.0 # $4 per 1 million vCU # Hugging Face Dataset Logging HF_LOG_REPO_ID = os.getenv("HF_LOG_REPO_ID") # e.g. "nolank/aionsearch-query-logs" HF_LOG_EVERY_MINUTES = int(os.getenv("HF_LOG_EVERY_MINUTES", "10")) # Feature Flags (for future features) FEATURE_IMAGE_SEARCH = False FEATURE_AUTH = False FEATURE_CACHE = False FEATURE_RERANKING = False FEATURE_TRACKING = True FEATURE_VECTOR_ADDITION = True