# 法规证据检索Skill 设计 ## 1. Skill 定位 `法规证据检索Skill` 负责为完整性检查结果补充法规原文证据,用于解释、页面展示和审计留痕。 英文实现标识建议使用 `RegulationEvidenceRetrieveSkill`。 本 Skill 不改变完整性判定结论。规则链路已经判定的缺失、错放和风险等级不能被 RAG 检索结果反向覆盖。 ## 2. 输入 ```python @dataclass class RegulationEvidenceRetrieveInput: requirement_results: list[CompletenessItemResult] rule_package_id: str workflow_type: str max_results_per_item: int = 3 ``` ## 3. 输出 ```python @dataclass class RegulationEvidenceRetrieveOutput: evidence_refs: list[EvidenceRef] unavailable_items: list[dict] warnings: list[dict] ``` `EvidenceRef` 字段: 1. `requirement_id` 2. `source_document` 3. `source_type` 4. `chapter_code` 5. `section_title` 6. `snippet` 7. `page_no` 8. `retrieval_score` 9. `metadata` ## 4. 检索范围 只检索法规资料,不检索业务申报资料。 metadata 过滤: 1. `source_role = regulation` 2. `workflow_type = registration` 3. `rule_package_id = nmpa_ivd_registration_v1` 4. `requirement_id` 或 `chapter_code` ## 5. 核心方法 ### 5.1 `run(input) -> RegulationEvidenceRetrieveOutput` 主入口方法。 ### 5.2 `build_evidence_query(item_result) -> str` 根据要求项名称、章节点和规则配置生成检索 query。 ### 5.3 `retrieve_from_vector_store(query, metadata_filter) -> list[EvidenceRef]` 优先使用 Chroma。 ### 5.4 `retrieve_from_fallback_index(query, metadata_filter) -> list[EvidenceRef]` 当 Chroma 不可用时,使用本地切片或关键词 fallback。 ### 5.5 `normalize_evidence_results(results) -> list[EvidenceRef]` 统一证据格式。 ## 6. 技术实现 使用技术: 1. Chroma 2. 本地 fallback 检索 3. 文本切片 metadata 4. Python 关键词匹配 ## 7. 异常处理 1. 向量库不可用:降级 fallback。 2. fallback 也不可用:返回证据不可用警告。 3. 找不到证据:不阻断完整性报告。 4. 命中业务资料:过滤掉,避免把申报资料当法规依据。 ## 8. 测试要点 1. 能根据要求项生成查询。 2. Chroma 可用时返回证据。 3. Chroma 不可用时 fallback 生效。 4. 证据检索失败不改变缺失结论。 5. 非法规资料被过滤。