import os from pathlib import Path # 加载 .env 文件(systemd 可通过 EnvironmentFile 设置,此处作为手动运行的兜底) _dotenv_path = Path(__file__).resolve().parent / ".env" if _dotenv_path.exists(): try: from dotenv import load_dotenv load_dotenv(_dotenv_path) except ImportError: pass # NestJS 内部 API API_BASE_URL = os.getenv("API_BASE_URL", "http://127.0.0.1:3000") RAG_WORKER_SECRET = os.getenv("RAG_WORKER_SECRET", "") # SiliconFlow SILICONFLOW_API_KEY = os.getenv("SILICONFLOW_API_KEY", "") SILICONFLOW_BASE_URL = os.getenv("SILICONFLOW_BASE_URL", "https://api.siliconflow.cn/v1") EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "BAAI/bge-m3") EMBEDDING_DIM = int(os.getenv("EMBEDDING_DIM", "1024")) RERANK_MODEL = os.getenv("RERANK_MODEL", "BAAI/bge-reranker-v2-m3") # DeepSeek DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY", "") DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1") DEEPSEEK_MODEL = os.getenv("DEEPSEEK_MODEL", "deepseek-chat") # Qdrant QDRANT_URL = os.getenv("QDRANT_URL", "http://127.0.0.1:6333") QDRANT_COLLECTION = os.getenv("QDRANT_COLLECTION", "zhixi_chunks") # Chunking CHUNK_SIZE = int(os.getenv("CHUNK_SIZE", "512")) CHUNK_OVERLAP = int(os.getenv("CHUNK_OVERLAP", "64")) # Worker WORKER_ID = os.getenv("WORKER_ID", f"worker-{os.getpid()}") POLL_INTERVAL = int(os.getenv("POLL_INTERVAL", "5")) HEARTBEAT_INTERVAL = int(os.getenv("HEARTBEAT_INTERVAL", "30"))