forked from Ikalus1988/MisakaNet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlesson-rag-kb-quality-flywheel-self-loop.json
More file actions
16 lines (16 loc) · 2.4 KB
/
Copy pathlesson-rag-kb-quality-flywheel-self-loop.json
File metadata and controls
16 lines (16 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"task_id": "lesson-rag-kb-quality-flywheel-self-loop",
"title": "RAG 知识库质量飞轮:自闭环建设",
"domain": "rag",
"tags": [
"rag",
"flywheel",
"quality",
"audit",
"feedback"
],
"problem": "某个垂直领域 RAG 知识库(190+ PDF,200K+ 向量)已上线运行,支持自然语言问答和每日自动巡检。但巡检发现的问题只能手动处理,整个闭环缺乏自动化:\n\n- 巡检失败 → 人工汇总到 badcase 文档 → 手动发给 AI 修复\n- 用户不满意时无反馈渠道\n- 同义词扩展表空缺,导致某些术语检索不到\n- 没有队列管理,无法追踪审核进度",
"solution": "实现四层闭环,每层可独立工作:\n\n### 第一层:同义词扩展(synonyms.json)\n- 创建独立 JSON 文件,32 组垂直领域同义词(报警/伺服/零点标定/编码器等)\n- `rag_core.py` 已有 `_load_synonyms()` 函数,按 mtime 增量热加载\n- 约定:key 以 `_` 开头为元数据,会被过滤;其余条目自动用于 `expand_query()`\n\n### 第二层:自学习引擎(kb_learning.py)\n- `log_query(query, top_score, chunks_count)` 接口与 `rag_core.py` 现有调用匹配\n- 自动判定 badcase 阈值:top_score < 0.45 失败级;< 0.6 警告级;chunks_count == 0 空检索\n- 写入 JSONL 队列文件(badcase_pending.jsonl),支持 append 追加\n- 提供 approve/reject 操作,批准后移入 approved 队列,拒绝移入 rejected 队列\n\n### 第三层:每日巡检(daily_audit.py)\n- 从 200 题题库分层抽样 7 题(2 L2 + 5 L3,按 tag 分层)\n- 调用 RAG API 实时检测:关键词命中、最低答案长度、品牌污染、语义鸿沟\n- 输出 JSON 报告 + Markdown 摘要 + 自动写入 badcase_pending\n- --cron 模式用于 crontab,exit code 反映通过率状态\n\n### 第四层:审核工具(badcase_review.py)\n- CLI 五个原子操作:list / show / approve / reject / auto\n- auto 自动批准高置信度 badcase(空检索、分数 < 0.3、\"低质量检索\"特征)\n- 与 kb_learning 共享同一套 JSONL 队列文件\n\n### 附加:IM 反馈收集(微信 bot)\n- 在现有 wxauto 机器人中拦截「好评/good」和「差评/bad」\n- 跟踪每位用户的上一条提问,反馈时关联原始查询\n- 调用 kb_learning.add_feedback() 写入队列",
"source": "lessons/contrib/rag-kb-quality-flywheel-self-loop.md",
"test_cmd": ""
}