8 Commits

Author SHA1 Message Date
lacerate551
a31ee4bba0 feat(exam_pkg): 优化出题系统稳定性与推理模型适配
- core/llm_utils: MiMo模型自动注入thinking=disabled参数,全局生效
- config: 新增LLM_DISABLE_THINKING配置项(默认true)
- generator: 推理模型自适应max_tokens(1.5x)、429限流重试+指数退避、v2管线补题机制
- generator: analyze_document_for_exam新增max_total参数控制AI出题上限
- generator: validate_questions_schema兼容type和question_type字段
- grader: 主观题max_tokens从1000提升至2000、fuzzy_match增加编辑距离容错
- manager: results变量初始化防NameError、透传max_total参数
- api: /exam/generate-smart支持max_total请求参数
2026-06-22 18:51:11 +08:00
lacerate551
789610d01f fix: INTENT_MAX_TOKENS 从 1024 提升至 2048,适配推理模型思考链预算
mimo-v2.5 推理模型思考链消耗 ~800-1000 tokens,原 1024 不够导致
content 为空、全部输出进入 reasoning_content,引发 JSON 数组格式
解析错误。2048 可确保思考链 + JSON 输出均有足够空间。
2026-06-21 23:30:31 +08:00
lacerate551
8268071fdc docs: 模型切换至 mimo-v2.5 + 文档全面更新
- config.py: INTENT_MODEL 从 deepseek-v4-flash 切换至 mimo-v2.5
- config.py: get_intent_client() 从百炼 API 切换至 mimo API
- RAG系统完整指南.md: v4.0→v4.1,新增图片检索子系统、P0安全网、
  救援管线、五层缓存架构文档;替换所有旧模型名和API地址
- RAG数据流程.md: 完全重写,匹配实际代码逻辑
- curl测试手册.md: 更新模型名和Reranker配置
- MinerU模型部署指南.md: VLM_MODEL 更新为 mimo-v2.5
- 开发与系统模块说明.md: API地址和模型名更新
- 测试指南.md: API地址和模型名更新
2026-06-21 23:11:46 +08:00
lacerate551
5ba0d782e2 feat(rag): 子章节级图片过滤 + VLM 后台增强 + 意图分析优化
- 图片选择新增 section_path 字段,支持子章节级过滤
- _filter_images_by_answer 增加 primary_sections 参数和叶子节点匹配
- 检索发散检测:primary_leaf_names > 3 时全局阈值+1
- _FIGURE_ANSWER_KEYWORDS 移除单字"图""表",正则图号兜底防误触发
- lazy_enhance 后台增强流程优化
- 意图分析与 LLM 工具层改进

评测:图片选择 F1 从 52.4% 提升至 66.3%(+13.9pp),Precision +16.5pp
2026-06-20 19:26:40 +08:00
lacerate551
ee5295cc97 fix(parser): PDF/DOCX 切片层级结构修复与 MinerU V2 解析增强
核心修复:
- _post_process_chunks: 用 _buffer_has_body 标志替代 buffer.text_level=0,
  标题+正文合并后保留 text_level 不置零,修复层级信息丢失
- heading_rules numeric_level2: 正则从 ^\d+\.\d+[\.、\s] 改为
  ^\d+\.\d+(?!\.\d),修复无空格标题如"2.1运行调度"无法匹配
- V2 title handler: heading_rules 优先(模式匹配可靠),VLM 仅兜底
  (VLM 常给所有标题 level=1)

MinerU V2 解析增强:
- 两轮 TOC 过滤:多行目录块检测 + 孤立标题/单字符残留清理
- 封面 logo 过滤、重复标题去重
- chart VLM 描述和 Markdown 数据表提取
- ChromaDB metadata 新增 text_level/bbox/table_type/sub_type 字段

配置调整:
- CLUSTER_SECTION_PREFIX_LEVELS 1→2(两级 section 聚类更精确)
- MINERU_LOCAL_BACKEND 默认改为 pipeline

文档:
- RAG检索流程逻辑.md 更新 MinerUChunk 字段、ChromaDB metadata、
  MinerU 解析策略等章节
- 新增 RAG引用跳转-优化计划.md、云端MinerU输出分析与优化方案.md
2026-06-19 23:56:13 +08:00
lacerate551
e205eda6a8 fix(config): 修复 MINERU_PREFER_ONLINE 逻辑反直觉 + 默认模型改为 vlm
- MINERU_PREFER_ONLINE: == "false" 恒 False → == "true" 正确启用在线 API
- MINERU_MODEL_VERSION: pipeline → vlm(高精度模式)
2026-06-19 15:29:12 +08:00
lacerate551
95f3b99064 fix(rag): BM25 分歧救援 source 一致性校验 + 意图分析 max_tokens 修复
1. _rescue_bm25_divergence 情况 B 注入前校验 source 与 contexts 多数 source 一致,
   防止跨文档注入无关切片(如 2.docx 吸烟场所切片混入 1.docx 投放查询)
2. INTENT_MAX_TOKENS 从 2048 提升至 4096,修复 mimo-v2.5 思维链截断导致意图分析偶发失败

评测 R2+ 结果:overall 4.35(基线 4.20),忠实度 +0.24,幻觉率不变
2026-06-19 14:39:16 +08:00
lacerate551
4fd53f48f9 chore: 死代码清理与标注
- 删除 chat_routes.py 中未被使用的 reciprocal_rank_fusion 函数(engine 有同功能方法平替)
- 删除 search_hybrid 中无效的 candidates 参数(未传递给 engine,实际由 RERANK_CANDIDATES 控制)
- 标注 RAG_SEARCH_CANDIDATES 为死代码
- 标注 VECTOR_WEIGHT/BM25_WEIGHT 在动态 RRF 启用时被覆盖
- 标注 llm_budget.py 模块当前未集成到主流程
- 标注 MAX_LLM_CALLS_PER_QUERY/MAX_QUERY_REWRITES 暂不生效
2026-06-17 20:04:49 +08:00