MBE 知识库质量控制系统

概述

MBE 系统内置了完整的知识库质量控制机制,能够在文档上传时自动评估质量并生成详细报告。

📋 质量评估体系

1. 文档质量评估 (PDFQualityReport)

位置:src/knowledge/pdf_processor.py - evaluate_quality() 方法

评估维度(权重):

  • 文字清晰度 (30%): 检测乱码字符比例
  • 内容密度 (25%): 每页字符数
  • 结构完整性 (20%): 段落数和平均长度
  • 内容完整性 (25%): 总字符数

评分标准

  • 优秀 (excellent): ≥ 80分 ✅ 建议发布
  • 良好 (good): 60-80分 ✅ 可以发布
  • 一般 (fair): 40-60分 ⚠️ 建议优化后发布
  • 较差 (poor): < 40分 ❌ 不建议发布

2. 知识库分块质量评估 (KBQualityReport)

位置:src/knowledge/pdf_processor.py - evaluate_kb_quality() 方法

评估维度(新权重 2026-02-03):

  • 分块数量 (20%): 理想范围 50-500 块
  • 分块长度 (20%): 理想范围 300-1500 字符
  • 内容多样性 (20%): 独特关键词数量
  • 向量覆盖率 (15%): 已生成向量的分块比例
  • 🆕 文本内容质量 (25%): OCR 质量检测

🆕 文本内容质量检测(2026-02-03 增强)

新增检测项

  1. 换行符密度检测

    • > 15%: -50分,标记 "文本碎片化严重,疑似 OCR 质量问题"
    • 10-15%: -25分,标记 "文本换行符较多"
  2. 平均段长检测

    • < 5 字符: -40分,标记 "文本高度碎片化,严重 OCR 问题"
    • 5-15 字符: -20分,标记 "文本较为碎片化"
  3. 乱码字符检测

    • > 5%: -30分,标记 "检测到乱码字符,OCR 识别质量差"

问题根源:之前的 evaluate_kb_quality 方法只检查分块结构,没有检查文本内容质量,导致 OCR 质量差的文档(如日本茶道专家)也能获得高分。

3. 权威性评估 (AuthorityScore)

位置:src/knowledge/authority_evaluator.py

评估维度

  • 元数据评分: 标题、作者、出版信息
  • 内容评分: 专业术语、引用、学术性

📊 实际评估结果

当前所有知识库质量分布

运行时间: 2026-02-03 05:57

质量等级 数量 占比
优秀 (≥80分) 11 78.6%
良好 (60-80分) 3 21.4%
一般 (40-60分) 0 0%
较差 (<40分) 0 0%

低质量知识库详情

日本茶道专家 (f7cdefb77b24) ⚠️

  • 质量评分: 64.5 / 100 (good)
  • 分块数: 98
  • 换行符比例: 28.0% 🔴 严重超标
  • 平均段长: 1.03 字符 🔴 严重超标
  • 独特关键词: 16913

检测到的问题

  1. 文本碎片化严重 (换行符比例: 28.0%),疑似 OCR 质量问题
  2. 文本高度碎片化 (平均段长: 2.5字符),严重 OCR 问题
  3. 向量覆盖率较低 (0.0%)

建议

  1. 使用更好的 OCR 工具重新处理,或使用文本版 PDF
  2. 强烈建议重新处理知识库文件

首块预览(乱码示例):

缅 宫 障口"丁烹 心 摹毒掏f 玄. y  ,,, :  传 承 千 年 的 本 茶 道 到 祗 有 何 魅 力...

临时解决方案

  • 已在 knowledge_bases/permissions.json 中禁用该专家 (enabled: false)
  • 用户查询会自动回退到通用 LLM,提供更准确的回答

🚨 系统缺陷与改进

发现的问题

  1. ❌ 质量评分未持久化

    • 质量评分只在上传时计算,存储在内存对象中
    • 没有写入 experts/index.json 配置文件
    • 重启服务后质量评分丢失
  2. ❌ 没有自动拒绝机制

    • 即使质量评分 < 40 (recommended_for_publish: false)
    • 系统不会自动禁用低质量专家
    • 需要管理员手动禁用
  3. ❌ OCR 质量检测缺失(已修复 ✅)

    • 之前的 evaluate_kb_quality 只检查分块结构
    • 没有检查文本内容质量(换行符密度、段落长度、乱码字符)
    • 2026-02-03 已增强: 新增文本内容质量检测(25% 权重)

建议改进

优先级 1: 质量评分持久化 🔴

目标: 将质量评分写入配置文件,便于管理和监控

实现方案:

  1. 修改 save_expert_to_index() 方法
  2. experts/index.json 中新增字段:
    {
      "id": "dynamic_f7cdefb77b24",
      "name": "日本茶道专家",
      "quality_score": 64.5,
      "quality_level": "good",
      "quality_issues": [...],
      "recommended_for_publish": true,
      ...
    }
    

优先级 2: 自动禁用低质量专家 🟡

目标: 质量评分 < 60 分的专家自动禁用

实现方案:

  1. process_file() 完成后检查质量评分
  2. 如果 kb.kb_quality_score < 60:
    • 自动设置 enabled: false
    • 添加 unpublish_reason: "知识库质量不达标"
    • 记录详细的质量问题

优先级 3: 质量监控面板 🟢

目标: 管理员可以查看所有专家的质量评分和问题

实现方案:

  1. 新增 API 端点: GET /admin/knowledge-bases/quality
  2. 返回所有知识库的质量报告
  3. 提供批量禁用/重新处理功能

📝 使用指南

1. 手动检查知识库质量

cd d:\Mises\mises-behavior-engine
python scripts/check_kb_quality.py

输出:

  • 终端: 所有知识库的质量评分和问题列表
  • 文件: docs/reports/KB_QUALITY_CHECK_REPORT.json

2. 禁用低质量专家

编辑 knowledge_bases/permissions.json:

{
  "expert_id": "dynamic_f7cdefb77b24",
  "enabled": false,
  "unpublish_reason": "知识库质量不达标(OCR 识别质量差)",
  "unpublish_note": "需要使用更好的 OCR 工具重新处理原始 PDF"
}

3. 重新处理知识库

步骤:

  1. 准备高质量的原始文档(文本版 PDF 或 OCR 重新识别)
  2. 删除旧的知识库文件:
    • knowledge_bases/f7cdefb77b24_chunks.json
    • knowledge_bases/vectors/f7cdefb77b24.index
  3. 通过 UI 或 API 重新上传文档
  4. 系统会自动重新评估质量

🎯 总结

MBE 有质量控制系统吗?有!

系统是否完善? 🟡 部分完善

  • ✅ 有完整的质量评估算法
  • ✅ 评估维度全面(文档质量、分块质量、权威性)
  • ✅ 生成详细的质量报告和建议
  • 新增 OCR 质量检测(2026-02-03)
  • ❌ 质量评分未持久化
  • ❌ 没有自动拒绝低质量专家
  • ❌ 缺少管理界面

日本茶道专家为什么上线了?

  • 之前的质量评估没有检测 OCR 问题
  • 系统只检查了分块结构(数量、长度、多样性),评分 82 分
  • 没有检查文本内容质量(换行符密度 28%、平均段长 1.03 字符)
  • 已在 2026-02-03 修复,现在评分降至 64.5 分

后续行动:

  1. ✅ 已禁用日本茶道专家
  2. ✅ 已增强质量评估算法
  3. 🔜 质量评分持久化
  4. 🔜 自动禁用机制
  5. 🔜 质量监控面板

文档版本: 1.0
最后更新: 2026-02-03
维护者: AI Assistant