2026-04-28 11:29:33 +08:00
|
|
|
|
# .env.example - 环境变量配置示例
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# AI+合规智能中枢
|
2026-04-28 11:29:33 +08:00
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== 应用基础配置 =====
|
|
|
|
|
|
APP_NAME=AI+合规智能中枢
|
|
|
|
|
|
APP_VERSION=0.1.0
|
|
|
|
|
|
DEBUG=false
|
|
|
|
|
|
|
|
|
|
|
|
# ===== Milvus向量数据库配置 =====
|
2026-05-20 23:34:08 +08:00
|
|
|
|
MILVUS_HOST=6.86.80.8
|
2026-04-28 11:29:33 +08:00
|
|
|
|
MILVUS_PORT=19530
|
2026-05-26 20:21:31 +08:00
|
|
|
|
MILVUS_COLLECTION=regulations_dense_1024_v2
|
2026-05-14 15:07:34 +08:00
|
|
|
|
MILVUS_DB_NAME=default
|
2026-05-20 23:34:08 +08:00
|
|
|
|
MILVUS_INDEX_TYPE=IVF_FLAT
|
|
|
|
|
|
MILVUS_NLIST=128
|
|
|
|
|
|
MILVUS_NPROBE=16
|
2026-04-28 11:29:33 +08:00
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== 嵌入模型配置 =====
|
2026-05-18 16:32:42 +08:00
|
|
|
|
EMBEDDING_MODEL=text-embedding-v3
|
2026-05-18 22:30:28 +08:00
|
|
|
|
EMBEDDING_DIM=1024
|
2026-05-18 16:32:42 +08:00
|
|
|
|
EMBEDDING_API_KEY=your_embedding_api_key_here
|
|
|
|
|
|
EMBEDDING_BASE_URL=http://6.86.80.4:30080/v1
|
|
|
|
|
|
EMBEDDING_TIMEOUT_SECONDS=120
|
2026-04-28 11:29:33 +08:00
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== MinIO对象存储配置 =====
|
2026-05-20 23:34:08 +08:00
|
|
|
|
MINIO_ENDPOINT=6.86.80.8:9000
|
2026-04-28 11:29:33 +08:00
|
|
|
|
MINIO_ACCESS_KEY=minioadmin
|
|
|
|
|
|
MINIO_SECRET_KEY=minioadmin123
|
|
|
|
|
|
MINIO_BUCKET=compliance-docs
|
2026-05-14 15:07:34 +08:00
|
|
|
|
MINIO_SECURE=false
|
2026-04-28 11:29:33 +08:00
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== Redis配置 =====
|
2026-05-20 23:34:08 +08:00
|
|
|
|
REDIS_HOST=6.86.80.8
|
2026-04-28 11:29:33 +08:00
|
|
|
|
REDIS_PORT=6379
|
2026-05-14 15:07:34 +08:00
|
|
|
|
REDIS_PASSWORD=
|
|
|
|
|
|
REDIS_DB=0
|
2026-04-28 11:29:33 +08:00
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== PostgreSQL配置 =====
|
2026-05-20 23:34:08 +08:00
|
|
|
|
POSTGRES_HOST=6.86.80.8
|
2026-04-28 11:29:33 +08:00
|
|
|
|
POSTGRES_PORT=5432
|
|
|
|
|
|
POSTGRES_USER=compliance
|
|
|
|
|
|
POSTGRES_PASSWORD=compliance123
|
|
|
|
|
|
POSTGRES_DB=compliance_db
|
|
|
|
|
|
|
2026-05-14 15:07:34 +08:00
|
|
|
|
# ===== 文档处理配置 =====
|
2026-04-28 11:29:33 +08:00
|
|
|
|
CHUNK_SIZE=512
|
2026-05-14 15:07:34 +08:00
|
|
|
|
CHUNK_OVERLAP=50
|
|
|
|
|
|
MAX_FILE_SIZE_MB=100
|
2026-05-18 16:32:42 +08:00
|
|
|
|
DOCUMENT_METADATA_PATH=backend/data/documents.json
|
2026-05-18 22:30:28 +08:00
|
|
|
|
PARSER_BACKEND=aliyun
|
|
|
|
|
|
CHUNK_BACKEND=aliyun
|
2026-06-10 11:10:36 +08:00
|
|
|
|
# 文档元数据存储后端:json(默认,无需数据库)或 postgres(启用 PG 持久化)
|
|
|
|
|
|
# ⚠ 以下功能需要 postgres(设为 json 时功能静默降级或报 500):
|
|
|
|
|
|
# - Direction B: 合规分析历史记录 (/compliance/history/*)
|
|
|
|
|
|
# - Direction B: DOCX 报告下载
|
|
|
|
|
|
# - Direction C: Finding Chat 消息持久化
|
2026-05-20 23:34:08 +08:00
|
|
|
|
DOCUMENT_REPOSITORY_BACKEND=json
|
2026-06-05 18:00:31 +08:00
|
|
|
|
# Set to true only when a Celery worker is running (./dev.sh start worker).
|
|
|
|
|
|
# Default false: document processing runs in FastAPI's threadpool (no external worker needed).
|
|
|
|
|
|
USE_CELERY_WORKER=false
|
2026-05-18 16:32:42 +08:00
|
|
|
|
|
2026-06-08 11:16:28 +08:00
|
|
|
|
# ===== 法规感知爬取配置 =====
|
|
|
|
|
|
PERCEPTION_CRAWL_TIMEOUT_SECONDS=120
|
|
|
|
|
|
PERCEPTION_MAX_EVENTS_PER_SOURCE=100
|
|
|
|
|
|
PERCEPTION_DIFF_SIMILARITY_THRESHOLD=0.85
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# ===== 阿里云文档解析 =====
|
|
|
|
|
|
ALIBABA_ACCESS_KEY_ID=your_aliyun_access_key_id
|
|
|
|
|
|
ALIBABA_ACCESS_KEY_SECRET=your_aliyun_access_key_secret
|
|
|
|
|
|
ALIBABA_ENDPOINT=docmind-api.cn-hangzhou.aliyuncs.com
|
2026-05-18 22:30:28 +08:00
|
|
|
|
ALIYUN_PARSE_POLL_INTERVAL_SECONDS=5
|
|
|
|
|
|
ALIYUN_PARSE_TIMEOUT_SECONDS=900
|
|
|
|
|
|
ALIYUN_PARSE_LAYOUT_STEP_SIZE=50
|
|
|
|
|
|
ALIYUN_LLM_ENHANCEMENT=true
|
|
|
|
|
|
ALIYUN_ENHANCEMENT_MODE=VLM
|
|
|
|
|
|
DOCUMENT_PARSE_ARTIFACT_PREFIX=artifacts
|
|
|
|
|
|
PARSER_FAILURE_MODE=fail
|
2026-05-14 15:07:34 +08:00
|
|
|
|
|
|
|
|
|
|
# ===== API服务配置 =====
|
|
|
|
|
|
API_HOST=0.0.0.0
|
|
|
|
|
|
API_PORT=8000
|
|
|
|
|
|
|
|
|
|
|
|
# ===== LLM配置(必填)=====
|
|
|
|
|
|
# LLM提供商选择: qwen / deepseek / qwen_vl
|
|
|
|
|
|
LLM_PROVIDER=deepseek
|
|
|
|
|
|
LLM_MODEL=deepseek-v4-flash
|
|
|
|
|
|
LLM_MAX_TOKENS=4096
|
|
|
|
|
|
LLM_TEMPERATURE=0.7
|
|
|
|
|
|
|
|
|
|
|
|
# ===== 统一API代理配置 =====
|
|
|
|
|
|
# 使用new-api代理服务,支持多个LLM模型
|
|
|
|
|
|
# 获取API Key: 向管理员申请
|
|
|
|
|
|
QWEN_API_KEY=your_api_key_here
|
|
|
|
|
|
DEEPSEEK_API_KEY=your_api_key_here
|
|
|
|
|
|
QWEN_BASE_URL=http://6.86.80.4:30080/v1
|
|
|
|
|
|
DEEPSEEK_BASE_URL=http://6.86.80.4:30080/v1
|
|
|
|
|
|
|
|
|
|
|
|
# ===== 可用模型 =====
|
|
|
|
|
|
# Qwen系列: qwen3.5-plus, qwen3-plus, qwen-max, qwen-turbo, qwen-long
|
|
|
|
|
|
# Qwen VL系列: qwen3-vl-plus, qwen-vl-max
|
|
|
|
|
|
# DeepSeek系列: deepseek-v4-flash, deepseek-v3.2, deepseek-v3, deepseek-chat, deepseek-coder
|
2026-05-18 22:30:28 +08:00
|
|
|
|
QWEN_MODEL=qwen3.6-plus
|
2026-05-14 15:07:34 +08:00
|
|
|
|
QWEN_VL_MODEL=qwen3-vl-plus
|
|
|
|
|
|
DEEPSEEK_MODEL=deepseek-v4-flash
|
|
|
|
|
|
|
|
|
|
|
|
# ===== RAG配置 =====
|
|
|
|
|
|
RAG_TOP_K=10
|
2026-05-20 23:34:08 +08:00
|
|
|
|
RAG_RETRIEVAL_TOP_K=20
|
2026-05-14 15:07:34 +08:00
|
|
|
|
RAG_MAX_CONTEXT_TOKENS=4000
|
|
|
|
|
|
RAG_SUMMARY_MAX_TOKENS=1024
|
2026-06-05 18:00:31 +08:00
|
|
|
|
RAG_SKILLS_MAX_TOKENS=2048
|
2026-05-18 16:32:42 +08:00
|
|
|
|
|
2026-06-05 18:00:31 +08:00
|
|
|
|
# ── Reranker (Cross-Encoder) ──────────────────────────────────────────────────
|
|
|
|
|
|
# Set RERANKER_ENABLED=true and point to a TEI or Cohere-compatible rerank API.
|
|
|
|
|
|
# Recommended model: BAAI/bge-reranker-v2.5-gemma2-lightweight (lighter) or
|
|
|
|
|
|
# BAAI/bge-reranker-v2-m3 (heavier, higher quality).
|
|
|
|
|
|
# The endpoint must expose POST /rerank (TEI style) or POST /v1/rerank (Cohere style).
|
|
|
|
|
|
RERANKER_ENABLED=true
|
|
|
|
|
|
RERANKER_BASE_URL=http://6.86.80.4:30080/v1
|
2026-05-20 23:34:08 +08:00
|
|
|
|
RERANKER_MODEL=BAAI/bge-reranker-v2-m3
|
|
|
|
|
|
RERANKER_API_KEY=
|
|
|
|
|
|
RERANKER_TOP_K=5
|
|
|
|
|
|
|
2026-05-18 16:32:42 +08:00
|
|
|
|
# ===== 会话配置 =====
|
|
|
|
|
|
SESSION_MAX_SESSIONS=100
|
|
|
|
|
|
SESSION_TIMEOUT_MINUTES=30
|
2026-06-05 18:00:31 +08:00
|
|
|
|
# SESSION_BACKEND=redis 启用 Redis 持久化会话(需要 Redis 可用,推荐生产环境)
|
|
|
|
|
|
# SESSION_BACKEND=memory 使用内存会话(重启丢失,适合本地开发)
|
|
|
|
|
|
SESSION_BACKEND=memory
|
|
|
|
|
|
|
|
|
|
|
|
# ===== 认证配置 (Auth) =====
|
|
|
|
|
|
# 生产环境必须替换为强随机密钥:
|
|
|
|
|
|
# python -c "import secrets; print(secrets.token_hex(32))"
|
|
|
|
|
|
AUTH_SECRET_KEY=change-me-in-production-must-be-32-or-more-characters-long
|
|
|
|
|
|
AUTH_ALGORITHM=HS256
|
|
|
|
|
|
# Token 有效期(分钟),默认 8 小时
|
|
|
|
|
|
AUTH_TOKEN_EXPIRE_MINUTES=480
|
|
|
|
|
|
# 设为 false 可跳过认证(仅限本地开发调试,生产必须 true)
|
|
|
|
|
|
AUTH_ENABLED=true
|
|
|
|
|
|
|
|
|
|
|
|
# ===== CORS =====
|
|
|
|
|
|
# 逗号分隔的允许跨域来源列表,生产环境绝不能使用 *
|
|
|
|
|
|
CORS_ALLOW_ORIGINS=http://localhost:5173
|