RAG-04生成编排-Guardrails-RAG

本文属于 RAG 工程框架中的「4 生成与智能体编排」环节,聚焦「Guardrails(护栏)」方法。可先阅读 RAG-00.方法概述 再进入本篇。

原理

对输入、推理过程和输出施加策略约束,并在触发风险时执行回退链路。

关键技术/实现路径

  • 内容策略检查(敏感、越权、无证据声明)。
  • 步数/预算/超时限制。
  • 失败回退到保守模板答案。

优缺点

  • 优点:显著提高线上稳定性与安全性。
  • 缺点:复杂查询可能被过度拦截。

性能与资源

  • 轻量规则护栏开销低。

应用场景

  • 生产级客服、合规与风控问答。

统一合成数据示例

输入数据片段

1
{"query":"请直接给出政策外特批流程","policy":"仅回答已收录制度"}

中间结果(护栏判定)

1
{"risk_flags":["unsupported_request"],"action":"fallback"}

最终生成示例(含引用)

1
{"answer":"未检索到可支持的制度依据,建议联系管理员补充规则。","citations":[]}

原始发表与工程实现

  • 代表性原始发表:Constitutional AI (2022)。
  • 核心解决问题:解决输出安全与可控性。
  • 成熟实现工具:NeMo Guardrails, Guardrails AI。

详细原理拆解

  • 输入/过程/输出三层策略,if risk_score>tau then fallback。
  • 典型实现可拆为:输入预处理 -> 方法核心计算 -> 候选/证据构建 -> 生成与引用。
  • 工程调优重点:质量(准确率/引用率)与成本(时延/token)的联合优化。
1
2
3
4
5
flowchart LR
In[输入 Query 与知识] --> Core[方法核心计算]
Core --> Rank[匹配/路由/排序]
Rank --> Build[证据组装]
Build --> Out[答案与引用]

工程落地扩展示例

伪代码

1
2
3
4
5
6
7
def guarded_rag(query, pipeline, policy):
risk_in = policy.input_risk(query)
if risk_in > policy.tau_in:
return policy.safe_reply()
ans = pipeline.run(query)
risk_out = policy.output_risk(ans)
return policy.rewrite_or_block(ans) if risk_out > policy.tau_out else ans

参数示例

1
2
3
4
input_tau: 0.65
output_tau: 0.55
blocked_topics: [未收录制度外流程]
fallback_template: abstain_with_contact

常见失败案例

  • 失败模式 1:阈值过松,违规操作说明仍被生成。
  • 失败模式 2:过度拦截,合规常规问也被拒答,满意度崩。
  • 失败模式 3:仅挡输出不挡工具调用,敏感检索已发生。

Demo 数据带入计算示例

1
2
用户索要「制度外特批流程」:input_risk=0.78 > 0.65 → 不调用检索链,直接 fallback。
与「证据不足拒答」不同:护栏针对 **请求类型/合规**,可在无检索情况下提前终止。
-------------本文结束感谢您的阅读-------------