from pydantic_settings import BaseSettings, SettingsConfigDict class Config(BaseSettings): qdrant_url: str = "http://localhost:6333" qdrant_profile_collection_name: str = "bluesky_profile" qdrant_avatar_collection_name: str = "bluesky_avatar" qdrant_post_collection_name: str = "bluesky_post" embedding_model: str = "all-MiniLM-L6-v2" embedding_device: str = "cuda" batch_size: int = 256 kafka_bootstrap_servers: str = "localhost:9092" kafka_topic: str = "firehose_events" kafka_group_id: str = "skyembed" kafka_auto_offset_reset: str = "latest" retina_host: str = "http://localhost:7075" metrics_port: int = 8500 metrics_host: str = "0.0.0.0" model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", case_sensitive=False, ) @property def embedding_size(self) -> int: if "mpnet" in self.embedding_model.lower(): return 768 elif "minilm" in self.embedding_model.lower(): return 384 elif "gte-large" in self.embedding_model.lower(): return 1024 else: # this might not always be correct depending on model used return 384 CONFIG = Config()