制度索引覆盖核对SOP
> 阶段:05 测试(流程)|版本 V1.0|固化日期 2026-10-04
> 一句话:制度 AI 索引(doc_index)与制度权威源(WORD_LIB)的覆盖核对与召回抽样,先用口径分解还原"对不上",再判定是否真漏索引。
一、适用场景
- 用户质疑"索引 N 条 vs 源 M 份对不上"(如 I-06:76 vs 140),需要判定是否存在真实漏索引。
- 制度文件批量增删、版本升版、重跑增量索引之后的一致性体检。
- 全流程体检 / 功能模块扫描中涉及 AI 问答链路(文档登记 → 向量化 → 召回)的核查项。
二、操作步骤
- 读真实数据(只读,不写库):
- 递归os.walk(config.WORD_LIB)统计全部 docx → 得"递归全量"数;
- 按_备份 in 路径剔出备份副本;按"是否在域目录直下"区分权威顶层与域内参考稿/工作稿。 - 权威顶层分类(只看文件名,不改文件):单制度
^[A-Z]{2}-(NN|FNN|RNN)、域汇编(含"制度汇编")、速查卡(含"速查卡")、其他。 - 取库内三张表:
instlib.word_map()→ 识别的单制度 code;db.list_documents()→ documents 登记;db.doc_index_meta()→ doc_index 索引。 - 四向比对:①缺失登记(源 code 有、documents 无);②冗余登记(documents 有、源无);③已登记未索引(doc_index 无该 doc_id);④索引片段为 0(chunks=0)。
- 召回抽样:
llm.embed(问句)对 5–8 条跨域典型问句,对db.all_embeddings()做余弦 top-5,人工判读是否命中对应制度域。 - 产出图文版核对报告:口径分解漏斗图 + 十域覆盖矩阵图 + 召回抽样表,走
resvg_py + _build_govdoc_docx.py公文版流水线(见 04-开发-技术路线方案图文制作流程SOP)。 - 结论判定:单制度覆盖 100% 且召回正常 → 无需重跑索引;有缺失 → 走
/ai增量索引(app._index_worker 自动只补 stale)。
三、注意边界
- 计数口径有三套:递归全量(含备份+参考稿)、权威顶层(域目录直下)、单制度编号去重。报告必须先声明口径,否则"对不上"永无定论。
_备份子目录、域内参考稿(健康报告/简历/历年分析等)必须排除——它们不是制度,进索引只会污染检索、浪费向量预算。- 域汇编是单制度的合集,正文与单制度重复,除 CW 财务汇编一条历史重定向登记外不单独索引;判定时把"汇编未索引"视为正确行为而非缺口。
- 召回判定不能只看标题前缀:制度标题是中文名(如"预算编制与执行管理办法"),
title.startswith('CW')会全部误判未命中;要按域语义人工判读。 - 全程只读数据库与文件系统;确需重跑索引时走系统自身的后台任务(串行、幂等),不得手工 INSERT embeddings。
四、反例避雷
- 反例 1:把"140 vs 76"直接当漏索引 64 份 → 实际 54 份是备份副本(15)+参考资料(39),10 份是域汇编,1 份是非编号结构文档;单制度 75/75 本就全覆盖。
- 反例 2:召回测试用英文前缀判命中 → 全部显示"未命中",实为断言写错(假阴性)。
- 反例 3:见 chunks 平均只有 9 就怀疑索引残缺 → 单制度篇幅小、分块按"第X章"切,平均 9 片段属正常;残缺与否看"got < len(parts) 不登记台账"机制与 chunks=0 条目。
五、关联笔记
- 代码锚点:
instlib.word_map()(识别规则)|db.seed_inst_docs()(登记)|db.doc_index_meta()/db.set_doc_index()(索引台账)|app._index_worker()(增量建索引,指纹+模型比对)|app._semantic_retrieve()(按片段哈希去重)。 - 配套脚本:
scripts/index_coverage_check.py(只读核对器,四向比对+分域统计)。 - 关联技能:04-开发-技术路线方案图文制作流程SOP(报告出图)、05-测试-全流程体检第一原则基线法、04-开发-本地LLM离线适配器与降级。
六、实战战绩
- 2026-10-04 HFMS I-06:索引 76 vs 源 140,口径分解后确认单制度 75/75=100% 覆盖(缺失登记 0、冗余 0、未索引 0、chunks=0 共 0),735 片段;召回抽样 6 问 5 正 1 偏("身份证保管"偏题,建议增强 SE 域证件条款表述),结论"无需重跑索引"。产出《HFMS制度索引覆盖核对报告_I-06_v1.0_20261004.docx》(图文版,2 图 1 表)。
七、版本记录
- V1.0(2026-10-04):初版固化,随 I-06 核对实战沉淀;含只读核对脚本。