迎检合规审查(Inspection Review)
输入(向用户确认)
inspection_file:迎检文件路径(PDF/扫描件/图片/docx/xlsx)dataset_name:RAGFlow 佐证数据集名(落实文件所在的知识库)inspection_name:检查名称(可选;缺省时从迎检文件名/标题提取简短中文名,如《关于开展内控检查的通知》→内控检查)
Step 0 — 前置检查
依赖系统环境变量 RAGFLOW_BASE_URL、RAGFLOW_API_KEY(用户已配置到系统)。先验证非空:
# bash / Git Bash
[ -z "$RAGFLOW_BASE_URL" ] || [ -z "$RAGFLOW_API_KEY" ] && echo "缺少环境变量"
:: Windows cmd
if "%RAGFLOW_API_KEY%"=="" echo 缺少环境变量
缺失时提示用户:配置系统环境变量后重开终端(Windows 新变量不会注入已运行的会话)。
Shell 变量引用对照(后续命令按所在终端选用,命令其余部分完全一致):
| Shell | 引用方式 |
|---|---|
| bash / Git Bash | $RAGFLOW_BASE_URL |
| Windows cmd | %RAGFLOW_BASE_URL% |
| PowerShell | $env:RAGFLOW_BASE_URL(且需用 curl.exe 而非 curl 别名) |
审查工作目录
在用户当前工作目录创建 <检查名称>-<YYYYMMDD>/(同日重复追加 -HHMM):
内控检查-20260828/
├── checklist.json # Step 1 产物:检查清单
├── requests/ # Step 2:每条检查项的检索请求体(item-01.json ...)
├── evidence/ # Step 2:RAGFlow 原始响应(item-01.json ...)
│ └── docs/ # Step 3:佐证原文副本(<document_id>.pdf ...,供报告跳转预览)
└── 合规报告-20260828.md # Step 3 产物:报告(中文名)
JSON/中间产物一律英文名,最终报告用中文名。以下 <DIR> 指该目录。
Step 1 — 解析检查项
- 用多模态能力直接读取迎检文件(PDF/扫描件/图片/docx/xlsx 均可),识别其中的检查表格/条目。
- 提取结构化检查项,写入
<DIR>/checklist.json,结构见 references/schemas.md。每条含id、category、requirement(检查要求原文)、keywords(检索关键词 2~4 个)。 - 检查项 >30 条时提示用户是否分批执行;用户确认后按批处理,每批独立走 Step 2/3,报告合并。
Step 2 — 逐条检索佐证
2.1 解析数据集 ID
curl -s -G "$RAGFLOW_BASE_URL/api/v1/datasets" \
--data-urlencode "name=<dataset_name>" \
-H "Authorization: Bearer $RAGFLOW_API_KEY" \
-o "<DIR>/datasets.json"
读取响应取 data[0].id 作为 dataset_id;查无此名时列出 data[].name 供用户选择。可带 include_parsing_status=true 确认文档均已解析(done_count > 0 且无 running_count/fail_count)。
2.2 逐条检索
对每条检查项,先生成请求体 <DIR>/requests/<item_id>.json(结构见 schemas.md):
{
"question": "<requirement 原文 + 关键词>",
"dataset_ids": ["<dataset_id>"],
"page": 1,
"page_size": 10,
"similarity_threshold": 0.2,
"vector_similarity_weight": 0.3,
"keyword": true,
"highlight": true
}
再执行检索(请求体走文件,规避 cmd/PowerShell/bash 的引号转义差异):
curl -s -X POST "$RAGFLOW_BASE_URL/api/v1/retrieval" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $RAGFLOW_API_KEY" \
--data @"<DIR>/requests/<item_id>.json" \
-o "<DIR>/evidence/<item_id>.json"
逐条执行并落盘;接口字段细节见 references/retrieval-api.md。
Step 3 — 交叉验证 + 报告
逐条读取 evidence/<item_id>.json,比对「检查要求」与命中 chunks,判定:
| 判定 | 条件 |
|---|---|
| ✅合规 | 最高 similarity ≥ 0.5,且命中内容语义覆盖检查要求 |
| ⚠️待补 | 有命中但 0.2 ≤ similarity < 0.5,或证据仅覆盖部分要求 |
| ❌缺项 | 无命中(total 为 0 或 chunks 为空) |
每条记录:判定、佐证文档名(document_keyword)、document_id、页码、最高相似度、关键摘录(highlight)。
下载佐证原文 + 提取页码(判定完成后执行,为报告提供可点击预览):
- 对非缺项判定引用的
document_id去重,逐个下载佐证原文到<DIR>/evidence/docs/(接口直接返回原文件二进制,见 references/retrieval-api.md):
curl -s "$RAGFLOW_BASE_URL/api/v1/datasets/<dataset_id>/documents/<document_id>" \
-H "Authorization: Bearer $RAGFLOW_API_KEY" \
-o "<DIR>/evidence/docs/<document_id>.<ext>"
扩展名 <ext> 取 document_keyword 的真实后缀(.pdf/.docx/...)。文件名用 document_id(英文、无空格,Markdown 链接安全)。下载失败时该条佐证在报告中退化为纯文本文档名,不中断流程。
- 页码:命中 chunk 的
positions为[页码, left, top, right, bottom]数组,一个 chunk 可跨多页。取最高相似度 chunk 的全部页码去重排序,报告标注如P4-5。
报告佐证列使用相对链接 [《文档名》](evidence/docs/<document_id>.<ext>),本地 Markdown 预览可直接点击打开原文。按 templates/report-template.md 生成 <DIR>/合规报告-<YYYYMMDD>.md,含汇总统计与缺项清单。
关键约束
- 佐证文档名与 document_id 必须来自 RAGFlow 真实响应,禁止编造。
- 相似度低于 0.5 的命中一律降级为「待补」,不得标为合规。
- API Key 只出现在请求头,不写入任何落盘文件,不出现在报告中。
requests/与evidence/保留不删,作为审查痕迹可追溯。- 佐证原文仅下载报告引用的文档(按 document_id 去重),不整库下载。
Scan to join WeChat group