Files
DEMO-AGENT/docs/详细设计/skill/法规证据检索Skill.md

101 lines
2.3 KiB
Markdown

# 法规证据检索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. 非法规资料被过滤。