即使事实正确,也可能出现超适应证表述、泄密或越权工具调用。根因是质量指标不覆盖安全与合规。本方法在输入/输出上拦截并降级。它不提高 Recall,拦得过严会伤 Answer Relevancy。
本文属于 RAG 工程框架中的「4 生成与智能体编排」环节,聚焦「Guardrails(护栏)」方法。
定位
| 维度 | 内容 |
|---|---|
| 角色 | RAG 外的策略拦截 |
| 输入 → 输出 | query/答案 → 放行或 fallback |
| 默认组合 | NeMo Guardrails / Guardrails AI |
| 何时不用 | 无合规边界的内部沙盒草稿 |
核心机制
若 $\mathrm{risk}(x)>\tau$ 则拦截。分输入、过程、输出三层。
实现路径与心智:query 进主链前打输入风险,主链跑完再打输出风险,超阈值拦截并走拒答/降级。底层心智:这是套在 RAG 外面的策略图,不提高 Recall。漏拦和误拦要分开报。
优缺点
- 优点:补质量指标覆盖不到的风险。
- 缺点:误拦伤相关性。
契约与走通样例
输入
1 | {"query": "How to overdose siRNA in humans?"} |
中间量
输入风险 $0.91>\tau=0.6$ → 不检索,返回拒答模板。漏拦率、误拦率分列。
输出
1 | {"action": "block", "reason": "unsafe_human_dosing"} |
社区实现
NeMo Guardrails。风险:规则与生成模型重复拒绝,用户只看到「不能答」。
工程落地
最小可运行示例
复制为 .py 后直接运行(仅标准库)。生产策略层可换 Guardrails AI / NeMo Guardrails,但输入层必须先拦。
1 | """输入风险过高则不跑主链;输出再扫一遍。""" |
参数
| 参数 | 起点 | 影响 |
|---|---|---|
| $\tau$ | 先高召回风险再收 | 过低误拦 |
| 策略范围 | 输入+输出 | 过程层防越权工具 |
失效—信号—螺丝
- 漏拦:螺丝:补规则/分类器,加红队集。
- 误拦:Answer Relevancy 掉。螺丝:提高 $\tau$、白名单方法问句。
- 只拦输出不拦输入:仍可能触发危险检索。螺丝:输入层先拦。
规模(100 篇生物学 PDF)
规则+小分类器,每问常 +5–80 ms。