"""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_pca96" # Image search uses the active collection so returned image vectors match its dimension. ZILLIZ_IMAGE_SEARCH_COLLECTION_NAME = ZILLIZ_COLLECTION_NAME AION_PCA96_MODEL_PATH = os.getenv("AION_PCA96_MODEL_PATH", "aion_search_pca96_model.npz") # Collection-specific configurations COLLECTION_CONFIGS = { "legacy_pca96": { "anns_field": "aion_search_embedding", "primary_key": "object_id", "output_fields": ["object_id", "ra", "dec", "r_mag"], "vector_dim": 96, "query_projection": "aion_pca96", } } # Get configuration for the selected collection _collection_config = 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"] ZILLIZ_VECTOR_DIM = _collection_config["vector_dim"] ZILLIZ_QUERY_PROJECTION = _collection_config["query_projection"] # 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