Skip to content

配置系统

UltimateRAG 使用 Pydantic Settings 集中管理配置,所有配置从环境变量或 .env 文件读取。

代码位置:src/ultimate_rag/config.py

1. 设计要点

  • 类型安全:所有配置都有 Python 类型和默认值,错误配置在启动时就能被发现
  • 进程级只读get_settings() 使用 @lru_cache,整个进程只解析一次环境变量
  • 统一装配:API 和 Worker 从同一个 Settings 装配依赖,保证两套进程配置一致
  • 敏感值不落库:API Key 只从 .env 注入,.env.example 只含占位值
python
from ultimate_rag.config import get_settings

settings = get_settings()   # 进程内单例,只解析一次

2. 配置分组

配置按用途分为几组,下面按组列出(默认值面向本地 Docker Compose 环境):

基础

环境变量默认值说明
APP_NAMEUltimateRAG应用名
ENVIRONMENTdevelopment运行环境
LOG_LEVELINFO日志级别
CORS_ORIGINS["http://localhost:3000", ...]跨域白名单

数据库与存储

环境变量默认值说明
DATABASE_URLpostgresql+asyncpg://...localhost:5432/ultimate_ragPostgreSQL 连接串
MINIO_ENDPOINTlocalhost:9000MinIO 地址
MINIO_ACCESS_KEY / MINIO_SECRET_KEY本地开发账号MinIO 凭据(生产必须更换)
MINIO_BUCKETdocuments原始文件桶
MILVUS_URIhttp://localhost:19530Milvus 地址
MILVUS_COLLECTIONknowledge_chunksDense Collection
MILVUS_SPARSE_COLLECTIONknowledge_chunks_sparse_v3BM25 Sparse Collection
BM25_K1 / BM25_B1.2 / 0.75BM25 基线参数;修改后需显式重建 Sparse 索引
CHUNK_SNAPSHOT_DIRdata/chunk_snapshotsEmbedding 前最终 Chunk 明文 JSON 目录

模型(阿里云百炼)

环境变量默认值说明
DASHSCOPE_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1百炼 OpenAI 兼容端点
DASHSCOPE_API_KEY必填API Key,只从 .env 提供
EMBEDDING_MODELtext-embedding-v4Embedding 模型
EMBEDDING_DIMENSION1024向量维度(必须与 Milvus 一致)
EMBEDDING_BATCH_SIZE10每批向量化数量
LLM_MODELqwen-plus问答模型
QUERY_REWRITE_MODELqwen-plus结构化查询改写模型
RERANK_MODELqwen3-rerank文本重排模型
RERANK_URL百炼 /compatible-api/v1/reranksQwen3 Rerank API 地址
RERANK_MAX_REQUEST_TOKENS120000总请求 Token 硬上限,实际还预留 10% 估算余量
OCR_MODELqwen3.5-ocrOCR 模型
VISION_MODELqwen3-vl-flash图片语义理解模型
OCR_MAX_IMAGE_BYTES6MBOCR 单图上限(百炼 Base64 限制约 7MB)
VISION_MAX_IMAGE_BYTES6MB视觉单图上限
OCR_MAX_OUTPUT_TOKENS4096OCR 有界输出,防止伪表格无限膨胀
VISION_MAX_OUTPUT_TOKENS1536视觉语义描述输出上限
MODEL_TIMEOUT_SECONDS60模型请求超时

切块与检索

环境变量默认值说明
MAX_UPLOAD_BYTES10MB上传文件上限
CHUNK_MAX_TOKENS512Chunk Token 预算(64–8192)
CHUNK_OVERLAP_TOKENS64Chunk 重叠 Token
CHUNK_TOKENIZERcl100k_base本地 Token 预算近似器
RETRIEVAL_TOP_K5默认召回数
RETRIEVAL_CANDIDATE_K30融合/重排前候选宽度
RETRIEVAL_RRF_K60RRF 排名平滑常数
RETRIEVAL_QUERY_REWRITEtrue默认是否启用查询改写
RETRIEVAL_RERANKtrue默认是否启用二阶段重排
RETRIEVAL_PARENT_EXPANSIONtrue默认是否启用 Small2Big
RETRIEVAL_PARENT_WINDOW1Parent 内前后 Child 窗口(0–3)
RETRIEVAL_PARENT_MAX_TOKENS1536单条扩展上下文 Token 上限
CONTEXT_MAX_CHARS12000LLM 上下文最大字符数
SUMMARY_MAX_CHUNKS24全文总结最多覆盖的章节 Chunk 数
SUMMARY_MAX_TOKENS16000全文总结证据 Token 预算
SUMMARY_CONTEXT_MAX_CHARS64000全文总结独立 Context 字符预算
CHAT_RECENT_TOKEN_BUDGET6000每轮保留的最近会话原文 Token 预算
CHAT_MEMORY_MAX_TOKENS1600递归长期记忆最大输出 Token
CHAT_GENERATION_STALE_SECONDS600PENDING 生成超时恢复阈值

Worker 任务

环境变量默认值说明
INGESTION_JOB_MAX_ATTEMPTS3最大尝试次数(1–10)
WORKER_POLL_INTERVAL_SECONDS1.0空队列轮询间隔
WORKER_LEASE_SECONDS900任务租约时长
WORKER_HEARTBEAT_SECONDS30心跳续租间隔
WORKER_RETRY_DELAY_SECONDS10重试基础延迟

PDF 解析

环境变量默认值说明
PDF_NATIVE_TEXT_THRESHOLD20扫描候选页原生文字阈值
PDF_SCAN_IMAGE_COVERAGE_THRESHOLD0.65扫描候选页最大栅格图覆盖率阈值
PDF_SCAN_VISION_TEXT_THRESHOLD300OCR 低于该字符数时补视觉理解,0 为关闭
PDF_RENDER_SCALE2.0扫描页渲染缩放
PDF_VISION_CONCURRENCY2图片理解并发
PDF_MAX_PICTURES20单 PDF 最大附图数
PDF_MIN_PICTURE_PIXELS10000附图最小像素
DOCLING_DEVICEcpuDocling 推理设备
DOCLING_NUM_THREADS4Docling 线程数
DOCLING_TIMEOUT_SECONDS600Docling 超时

3. 校验规则

配置里有三个跨字段校验(validate_cross_field_limits):

  • chunk_overlap_tokens 必须小于 chunk_max_tokens
  • retrieval_parent_max_tokens 必须不小于 chunk_max_tokens
  • worker_heartbeat_seconds 必须小于 worker_lease_seconds

违反会在启动时报错,而不是在运行时才暴露。

4. 完整配置示例

参考仓库根目录 .env.example

dotenv
# 必填:百炼地址与密钥
DASHSCOPE_BASE_URL=https://你的百炼工作空间地址/compatible-mode/v1
DASHSCOPE_API_KEY=你的API-Key

# 可选覆盖(省略时用默认值)
EMBEDDING_MODEL=text-embedding-v4
LLM_MODEL=qwen-plus
OCR_MODEL=qwen3.5-ocr
VISION_MODEL=qwen3-vl-flash

# Chunk 明文诊断快照(Docker Compose 会覆盖为容器 bind mount 目标)
CHUNK_SNAPSHOT_DIR=data/chunk_snapshots

# 前端
NEXT_PUBLIC_API_URL=

安全提醒

.env、真实 API Key、生产凭据禁止提交到 Git.env.example 只能包含安全占位值。 CHUNK_SNAPSHOT_DIR 中保存的是文档明文,必须限制目录权限、监控磁盘容量,并保持 Git 忽略。

下一步

UltimateRAG · 从最小可用 RAG 演进为企业级知识平台