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 增强)
新增检测项:
换行符密度检测
> 15%: -50分,标记 "文本碎片化严重,疑似 OCR 质量问题"10-15%: -25分,标记 "文本换行符较多"
平均段长检测
< 5 字符: -40分,标记 "文本高度碎片化,严重 OCR 问题"5-15 字符: -20分,标记 "文本较为碎片化"
乱码字符检测
> 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
检测到的问题:
- 文本碎片化严重 (换行符比例: 28.0%),疑似 OCR 质量问题
- 文本高度碎片化 (平均段长: 2.5字符),严重 OCR 问题
- 向量覆盖率较低 (0.0%)
建议:
- 使用更好的 OCR 工具重新处理,或使用文本版 PDF
- 强烈建议重新处理知识库文件
首块预览(乱码示例):
缅 宫 障口"丁烹 心 摹毒掏f 玄. y ,,, : 传 承 千 年 的 本 茶 道 到 祗 有 何 魅 力...
临时解决方案:
- 已在
knowledge_bases/permissions.json中禁用该专家 (enabled: false) - 用户查询会自动回退到通用 LLM,提供更准确的回答
🚨 系统缺陷与改进
发现的问题
❌ 质量评分未持久化
- 质量评分只在上传时计算,存储在内存对象中
- 没有写入
experts/index.json配置文件 - 重启服务后质量评分丢失
❌ 没有自动拒绝机制
- 即使质量评分 < 40 (
recommended_for_publish: false) - 系统不会自动禁用低质量专家
- 需要管理员手动禁用
- 即使质量评分 < 40 (
❌ OCR 质量检测缺失(已修复 ✅)
- 之前的
evaluate_kb_quality只检查分块结构 - 没有检查文本内容质量(换行符密度、段落长度、乱码字符)
- 2026-02-03 已增强: 新增文本内容质量检测(25% 权重)
- 之前的
建议改进
优先级 1: 质量评分持久化 🔴
目标: 将质量评分写入配置文件,便于管理和监控
实现方案:
- 修改
save_expert_to_index()方法 - 在
experts/index.json中新增字段:{ "id": "dynamic_f7cdefb77b24", "name": "日本茶道专家", "quality_score": 64.5, "quality_level": "good", "quality_issues": [...], "recommended_for_publish": true, ... }
优先级 2: 自动禁用低质量专家 🟡
目标: 质量评分 < 60 分的专家自动禁用
实现方案:
- 在
process_file()完成后检查质量评分 - 如果
kb.kb_quality_score < 60:- 自动设置
enabled: false - 添加
unpublish_reason: "知识库质量不达标" - 记录详细的质量问题
- 自动设置
优先级 3: 质量监控面板 🟢
目标: 管理员可以查看所有专家的质量评分和问题
实现方案:
- 新增 API 端点:
GET /admin/knowledge-bases/quality - 返回所有知识库的质量报告
- 提供批量禁用/重新处理功能
📝 使用指南
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. 重新处理知识库
步骤:
- 准备高质量的原始文档(文本版 PDF 或 OCR 重新识别)
- 删除旧的知识库文件:
knowledge_bases/f7cdefb77b24_chunks.jsonknowledge_bases/vectors/f7cdefb77b24.index
- 通过 UI 或 API 重新上传文档
- 系统会自动重新评估质量
🎯 总结
MBE 有质量控制系统吗? ✅ 有!
系统是否完善? 🟡 部分完善
- ✅ 有完整的质量评估算法
- ✅ 评估维度全面(文档质量、分块质量、权威性)
- ✅ 生成详细的质量报告和建议
- ✅ 新增 OCR 质量检测(2026-02-03)
- ❌ 质量评分未持久化
- ❌ 没有自动拒绝低质量专家
- ❌ 缺少管理界面
日本茶道专家为什么上线了?
- 之前的质量评估没有检测 OCR 问题
- 系统只检查了分块结构(数量、长度、多样性),评分 82 分
- 没有检查文本内容质量(换行符密度 28%、平均段长 1.03 字符)
- 已在 2026-02-03 修复,现在评分降至 64.5 分
后续行动:
- ✅ 已禁用日本茶道专家
- ✅ 已增强质量评估算法
- 🔜 质量评分持久化
- 🔜 自动禁用机制
- 🔜 质量监控面板
文档版本: 1.0
最后更新: 2026-02-03
维护者: AI Assistant