"""配置模块 — 路径、端口、外部服务地址""" import os from pathlib import Path # ===== 路径配置 ===== # 法规原文目录(容器内挂载点,只读) LAW_PACK_DIR = Path(os.getenv("LAW_PACK_DIR", "/data/law-pack-2026-07-01-markdown")) # 索引数据目录(容器内挂载点,读写) LAW_KB_DATA_DIR = Path(os.getenv("LAW_KB_DATA_DIR", "/data/law-kb-data")) # FAISS 索引文件路径 FAISS_INDEX_PATH = LAW_KB_DATA_DIR / "faiss" / "index.faiss" # SQLite metadata 数据库路径 SQLITE_PATH = LAW_KB_DATA_DIR / "metadata.db" # 构建日志目录 LOGS_DIR = LAW_KB_DATA_DIR / "logs" # 地方性法规区域映射文件 REGION_MAPPING_PATH = LAW_PACK_DIR / "地方性法规区域映射.json" # 法规类别与目录名映射 CATEGORY_DIRS = { "法律": "法律", "行政法规": "行政法规", "监察法规": "监察法规", "司法解释": "司法解释", "地方性法规": "地方性法规", } # ===== 外部服务地址 ===== # 容器内通过 localhost 访问(--network host 模式) EMBEDDING_URL = os.getenv("EMBEDDING_URL", "http://localhost:8003/v1") LLM_URL = os.getenv("LLM_URL", "http://localhost:7000/v1") # embedding 模型名(与 114 上 vLLM served-model-name 一致) EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "qwen3-embedding-0.6b") # LLM 模型名 LLM_MODEL = os.getenv("LLM_MODEL", "qwen3.5-35b") # ===== 索引参数 ===== # embedding 批量大小 EMBEDDING_BATCH_SIZE = int(os.getenv("EMBEDDING_BATCH_SIZE", "32")) # FAISS HNSW 参数 HNSW_M = 32 HNSW_EF_CONSTRUCTION = 200 HNSW_EF_SEARCH = 64 # 检索默认 Top-K DEFAULT_TOP_K = 20 # RAG 检索 Top-K RAG_TOP_K = 10 # RAG 相似度阈值(低于此值不调用 LLM) RAG_SIMILARITY_THRESHOLD = 0.3 # ===== API 参数 ===== # 查询最大长度 MAX_QUERY_LENGTH = 1000 # 分页默认值 DEFAULT_PAGE_SIZE = 20 MAX_PAGE_SIZE = 100 # 浏览页分页 BROWSE_PAGE_SIZE = 50 # ===== 服务端口 ===== APP_PORT = int(os.getenv("APP_PORT", "8090"))