跳转至

字段手册:CG_RAG

供部署 CG 进程的运维人员参阅,调用方无需阅读。字段格式与加载顺序见 字段手册总览。

本章说明 question_app.yaml(或 cg-retrieval.yaml)中 cg_rag: 与 retrieval: 的配置项。修改后须重启 CG 进程。

未配置 generation_endpoint / generation_model 时,检索功能仍可正常使用;rag / constrained-generate 接口将返回业务层失败,而非 HTTP 500。

cg_rag

CG_RAG HTTP/MCP 进程。生产环境中可将此段(连同 retrieval)单独提取至 cg-retrieval.yaml。

YAML 键 值格式 环境变量 含义
http_prefix 以 / 开头,如 /cg-rag CG_RAG_HTTP_PREFIX HTTP 路由前缀
mcp_path 如 /cg-rag/mcp CG_RAG_MCP_PATH MCP 挂载路径
mcp_url 完整 URL,建议带尾 / QUESTION_GENERATED_APP_CG_RAG_MCP_URL MCP 对外地址
provider deepseek / poly / openai_compatible CG_RAG_LLM_PROVIDER 文本生成 provider
generation_endpoint chat completions URL CG_RAG_GENERATION_ENDPOINT 文本生成上游
generation_model 上游模型名 CG_RAG_GENERATION_MODEL 文本生成模型
api_key 仅写入 secrets CG_RAG_API_KEY 文本生成鉴权
generation_response_format_json true / false CG_RAG_GENERATION_RESPONSE_FORMAT_JSON JSON response format
generation_enable_thinking true / false CG_RAG_GENERATION_ENABLE_THINKING 服务级 thinking 默认值
generation_streaming true / false CG_RAG_GENERATION_STREAMING constrained generation 是否以 stream 方式读取上游
stream_answer_token_delay_seconds 小数,0 表示关闭 CG_RAG_STREAM_ANSWER_TOKEN_DELAY_SECONDS /rag/stream token pacing
timeout_seconds 正整数,单位秒 CG_RAG_TIMEOUT_SECONDS LLM 超时时限
max_context_docs 正整数 CG_RAG_MAX_CONTEXT_DOCS 生成阶段最多使用的候选文档数
default_max_items 正整数 CG_RAG_DEFAULT_MAX_ITEMS 默认返回条文数
cache_max_entries 整数,0 表示禁用写入 CG_RAG_RETRIEVE_CACHE_MAX_ENTRIES retrieve-rerank 缓存条数
cache_ttl_seconds 秒,0 表示禁用写入 CG_RAG_RETRIEVE_CACHE_TTL_SECONDS 缓存 TTL
hydration_sidecar_enabled true / false CG_RAG_HYDRATION_SIDECAR_ENABLED hydration sidecar
hydration_sidecar_path 绝对路径或空字符串 CG_RAG_HYDRATION_SIDECAR_PATH sidecar SQLite 路径
generation_concurrency 正整数 CG_RAG_GENERATION_CONCURRENCY 生成并发数(与视觉共用)
retrieval_concurrency 正整数 CG_RAG_RETRIEVAL_CONCURRENCY 检索并发数
capacity_wait_timeout_seconds 秒 CG_RAG_CAPACITY_WAIT_TIMEOUT_SECONDS 等待容量的超时时限
vision_max_pixels 正整数 CG_RAG_VISION_MAX_PIXELS 图片像素上限
vision_max_dimension 正整数 CG_RAG_VISION_MAX_DIMENSION 长边上限
vision_normalized_max_dimension 正整数 CG_RAG_VISION_NORMALIZED_MAX_DIMENSION 规范化后长边上限
vision_jpeg_quality 1–100 CG_RAG_VISION_JPEG_QUALITY JPEG 质量
remote_api true / false CG_RAG_REMOTE_API 是否作为远端 API 进程运行
host 0.0.0.0 QUESTION_APP_CG_RAG_HOST 监听地址
port 整数,默认 8864 QUESTION_APP_CG_RAG_PORT、CG_RAG_PORT 监听端口
visible_gpu 字符串,可为 "" QUESTION_APP_CG_RAG_VISIBLE_GPU CUDA_VISIBLE_DEVICES
tmux_window 字符串 QUESTION_APP_CG_RAG_TMUX_WINDOW 启动脚本 tmux 窗口名
legacy_windows 逗号分隔或空字符串 QUESTION_APP_CG_RAG_LEGACY_WINDOWS 需关闭的旧窗口列表
warmup_scopes full 或 full,usual QUESTION_APP_CG_RAG_WARMUP_SCOPES、CG_RAG_WARMUP_SCOPES 启动预热;空字符串表示跳过
startup_timeout_seconds 正整数 QUESTION_APP_CG_RAG_STARTUP_TIMEOUT_SECONDS 启动等待时限

cg_rag.vision

嵌套于 cg_rag: 下,与文本生成上游相互独立。

YAML 键 值格式 环境变量 含义
endpoint 多模态 chat completions URL CG_RAG_VISION_ENDPOINT VLM 地址;为空则视觉未配置
model 上游模型名 CG_RAG_VISION_MODEL VLM 模型名
api_key 仅写入 secrets CG_RAG_VISION_API_KEY 为空则回退至 CG_RAG_API_KEY
enable_thinking true / false CG_RAG_VISION_ENABLE_THINKING 服务级视觉 thinking 默认值
streaming true / false CG_RAG_VISION_STREAMING 是否以 stream 方式读取 VLM
max_images 正整数,默认 4 CG_RAG_VISION_MAX_IMAGES 单次请求最多图片数
max_image_bytes 字节数 CG_RAG_VISION_MAX_IMAGE_BYTES 单张图片解码后的大小上限
max_tokens 正整数 CG_RAG_VISION_MAX_TOKENS 视觉请求的 max_tokens
agentic_max_search_rounds 正整数,硬上限 3 CG_RAG_VISION_AGENTIC_MAX_SEARCH_ROUNDS 智能生成检索轮数
agentic_retrieval_topk 正整数 CG_RAG_VISION_AGENTIC_RETRIEVAL_TOPK 每轮检索候选数
agentic_workflow controller / continuous CG_RAG_VISION_AGENTIC_WORKFLOW 智能生成工作流;默认 controller。如需恢复原生 ReAct,设为 continuous
profile e10 / continuous_base / controller / controller_wip CG_RAG_VISION_PROFILE 命名行为包。为空时:continuous 对应 e10,其余对应 controller。修改后须重启 CG
total_budget_seconds 正数,单位秒;0 或空表示使用 profile 默认值 CG_RAG_VISION_TOTAL_BUDGET_SECONDS 整单墙钟预算。阶段启动前检查;预算耗尽且无可用报告时返回 vision_budget_exceeded。e10 默认 150s(现网均时约 67s,Question/CG 外层超时 180s,取中间值以保留重试余量)。修改后须重启 CG
sse_heartbeat_seconds ≥0;-1 或未设表示使用 profile 值;0 表示关闭 CG_RAG_VISION_SSE_HEARTBEAT_SECONDS 等待 VLM/检索时长阶段的 SSE 心跳。默认 15s:发送 : keepalive 注释行(前端 web/src/lib/sse.ts 忽略)并附带 progress+heartbeat 事件。修改后须重启 CG
strict_retrieval_failure true/false;空表示使用 profile 值 CG_RAG_VISION_STRICT_RETRIEVAL_FAILURE 检索全部失败时是否在成文前拒绝。e10/controller 默认开启;continuous_base 默认关闭(与线上旧有的「先成文」行为一致)。如需回退,设为 false 或切换至 continuous_base。修改后须重启 CG
upstream_retry_count 正整数;0 或空表示使用 profile 默认值 CG_RAG_VISION_UPSTREAM_RETRY_COUNT VLM/上游 connect 与 pre-token 重试次数(profile 默认值多为 4)。修改后须重启 CG
upstream_retry_sleep_seconds ≥0;-1 或未设表示使用 profile 值 CG_RAG_VISION_UPSTREAM_RETRY_SLEEP_SECONDS 上游重试间隔,单位秒。修改后须重启 CG
hybrid_generation_endpoint chat completions URL CG_RAG_HYBRID_GENERATION_ENDPOINT 垂域+RAG 的文本模型地址。为空则 /vision/hybrid 不可用
hybrid_generation_model 上游模型名 CG_RAG_HYBRID_GENERATION_MODEL 现网为 deepseek-flash。请勿填写受约束生成所用的 deepseek-chat
hybrid_generation_api_key 仅写入 secrets CG_RAG_HYBRID_GENERATION_API_KEY 文本模型密钥,不回退至 CG_RAG_API_KEY

Prompt SHA 钉扎见各 profile 的 prompt_keys;启动预检由 CG_RAG_STRICT_PROMPT_PINS 控制(严格模式下 pin 不匹配时拒绝启动)。

endpoint 或 model 为空时,仅 /cg-rag/vision/* 接口返回 vision_not_configured。亦可使用遗留写法,将 CG_RAG_VISION_* 写在 cg_rag.env 或顶层 env: 中;推荐使用 typed vision: 段,语义更清晰。

密钥字段结构见 问答主站 · secrets。

retrieval

未按 scope 覆盖时使用的默认检索路径,以及 Question API 调用检索 HTTP 的地址。问答进程同样会读取 default_scope 和 retriever_*,路径表仍置于本段,因为修改后必须重启 CG。

YAML 键 值格式 环境变量 含义
default_scope full / usual / usual_plus_law QUESTION_GENERATED_APP_DEFAULT_SCOPE 默认 scope
retriever_host 主机名 QUESTION_GENERATED_APP_RETRIEVER_HOST 检索进程主机
retriever_port 整数 QUESTION_GENERATED_APP_RETRIEVER_PORT 检索端口
retrieval_endpoint 完整 URL QUESTION_GENERATED_APP_RETRIEVAL_ENDPOINT 如 http://127.0.0.1:8864/retrieve
corpus_root 绝对路径 QUESTION_GENERATED_APP_CORPUS_ROOT 默认语料路径
index_root 绝对路径 QUESTION_GENERATED_APP_INDEX_ROOT 默认 dense 索引目录
bm25_index_root 绝对路径 QUESTION_GENERATED_APP_BM25_INDEX_ROOT 默认 BM25 索引目录
embedding_model_path 绝对路径 QUESTION_GENERATED_APP_EMBEDDING_MODEL_PATH 本地 embedding 权重路径
retrieval_method 如 qwen3-0.6b / qwen3-4b QUESTION_GENERATED_APP_RETRIEVAL_METHOD 检索方法名
index_file_name 如 qwen3-4b_Flat.index QUESTION_GENERATED_APP_INDEX_FILE_NAME dense 索引文件名
rerank_model_path 绝对路径 QUESTION_GENERATED_APP_RERANK_MODEL_PATH 本地 rerank 权重路径
topks_by_stem 映射或 stem:n,stem:n QUESTION_GENERATED_APP_TOPKS_BY_STEM 按语料 stem 设定的 topk

scope 仅允许上述三个名称,不支持在 YAML 中新增第四个;如需变更名称列表,须同步修改 Python 代码与前端。

retrieval.usual / usual_plus_law / full

每个 scope 对应独立配置段,键名相同,环境变量前缀各异:

YAML 键 usual → usual_plus_law → full →
corpus_root QUESTION_GENERATED_APP_USUAL_CORPUS_ROOT QUESTION_GENERATED_APP_USUAL_PLUS_LAW_CORPUS_ROOT QUESTION_GENERATED_APP_FULL_CORPUS_ROOT
index_root …_USUAL_INDEX_ROOT …_USUAL_PLUS_LAW_INDEX_ROOT …_FULL_INDEX_ROOT
bm25_index_root …_USUAL_BM25_INDEX_ROOT …_USUAL_PLUS_LAW_BM25_INDEX_ROOT …_FULL_BM25_INDEX_ROOT
retrieval_method …_USUAL_RETRIEVAL_METHOD …_USUAL_PLUS_LAW_RETRIEVAL_METHOD …_FULL_RETRIEVAL_METHOD
index_file_name …_USUAL_INDEX_FILE_NAME …_USUAL_PLUS_LAW_INDEX_FILE_NAME …_FULL_INDEX_FILE_NAME
topks_by_stem …_USUAL_TOPKS_BY_STEM …_USUAL_PLUS_LAW_TOPKS_BY_STEM …_FULL_TOPKS_BY_STEM

路径必须指向对应 scope 的实际语料与索引。retrieval_method 与 index_file_name 须与构建索引时所用配置保持一致,否则将导致加载失败或召回结果为空。

retrieval.embedding_api / retrieval.rerank_api

YAML 路径 值格式 环境变量 含义
embedding_api.endpoint URL 或 "" CG_RAG_EMBEDDING_API_ENDPOINT 为空则使用本地 embedding
embedding_api.model 模型名 CG_RAG_EMBEDDING_API_MODEL 远端 embedding 模型
embedding_api.dimension 整数,未使用远端时可填 0 CG_RAG_EMBEDDING_API_DIMENSION 向量维度
rerank_api.endpoint URL 或 "" CG_RAG_RERANK_API_ENDPOINT 为空则使用本地 rerank
rerank_api.model 模型名 CG_RAG_RERANK_API_MODEL 远端 rerank 模型

env: 逃生舱

任意 KEY: value 键值对,KEY 须为合法环境变量名(字母/数字/下划线)。仅用于尚无对应 typed 字段的项,例如历史部署中的 CG_RAG_VISION_ENDPOINT。已有 typed 字段的配置项请写在对应段,避免两处同时填写导致冲突。

最小可运行片段

仅需检索、无需生成时,CG 进程最少须配置 scope 路径:

retrieval:
  default_scope: full
  full:
    corpus_root: /srv/corpora/full
    index_root: /srv/indexes/full-dense
    bm25_index_root: /srv/indexes/full-bm25
    retrieval_method: qwen3-4b
    index_file_name: qwen3-4b_Flat.index
cg_rag:
  host: 0.0.0.0
  port: 8864
  http_prefix: /cg-rag
  mcp_path: /cg-rag/mcp

若需问答功能,在此基础上补充 cg_rag.generation_endpoint / generation_model 及 secrets 中的 cg_rag.api_key。若需图片处理,补充 cg_rag.vision.endpoint / model。

修改 YAML 后重启 CG。以 /cg-rag/health 接口做脱敏确认,禁止在日志中输出 secrets。

inbound_token / path_ids(2026-09-29)

  • cg_rag.inbound_token(secrets)/ CG_RAG_INBOUND_TOKEN:入站 Bearer 令牌。
  • cg_rag.expose_docs / CG_RAG_EXPOSE_DOCS:默认 false。
  • CG_RAG_REQUIRE_INBOUND_AUTH、CG_RAG_STRICT_CONFIG_CONFLICTS:严格启动开关,默认关闭。
  • health/profiles 的 path_ids:sha256(os.path.realpath(path))[:16];测试向量 compute_path_id("/data/x") == "e220a107e93688b1"。