目录 (Outline)
- 一、 AI 的「野蛮生长」:为什么你的 RAG 应用需要防护栏?
- 二、 核心挑战:幻觉、隐私泄露与越狱攻击
- 三、 现代防护栏架构:Input -> LLM -> Output Verification
- 四、 实战 1:基于 Pydantic 的结构化输出校验
- 五、 实战 2:利用语义相似度检测 AI 幻觉
- 六、 进阶:自动化敏感信息 (PII) 脱敏
- 七、 总结:构建可信、合规的 AI 应用
一、 AI 的「野蛮生长」:为什么你的 RAG 应用需要防护栏?
1. 业务风险
如果你构建的是一个医疗或金融咨询 AI,模型一旦产生「幻觉」并给出错误建议,后果将不堪设想。
2. 监管要求
GDPR 等法规要求应用必须严格保护用户隐私,禁止模型在回复中泄露敏感数据。
二、 核心挑战:幻觉、隐私泄露与越狱攻击
1. 幻觉 (Hallucination)
AI 可能会编造看似真实但实际上并不存在的知识,尤其是在 RAG 检索到的文档质量不高时。
2. PII 泄露
用户可能会在 Prompt 中无意间输入电话、身份证号。AI 必须学会识别并拒绝处理这些信息。
3. 越狱 (Jailbreak)
通过复杂的提示词(如「DAN」模式),用户可能会绕过模型的安全限制,让其输出违禁内容。
三、 现代防护栏架构:Input -> LLM -> Output Verification
一套完整的防护方案应该包含两个层级:
- 输入防御:在请求发送给 LLM 之前,进行意图识别和敏感词过滤。
- 输出校验 (Guardrails):对 LLM 生成的内容进行二次核查。
四、 实战 1:基于 Pydantic 的结构化输出校验
在业务系统中,我们通常需要 AI 返回 JSON 格式的数据。
实现方案
使用 Guardrails AI 或 Instructor 库。
from pydantic import BaseModel, Field, validator
class ArticleSummary(BaseModel):
title: str = Field(description="文章标题")
summary: str = Field(description="不少于 50 字的摘要")
@validator('summary')
def validate_length(cls, v):
if len(v) < 50:
raise ValueError("摘要太短了!")
return v
如果 AI 生成的 JSON 不符合 Pydantic 定义,防护栏会自动要求模型进行重试。
五、 实战 2:利用语义相似度检测 AI 幻觉
如何判断 AI 的回复是否忠实于检索到的文档?
Self-RAG 策略
- 生成回复。
- 语义比对:将回复与原文片段进行
Cosine Similarity计算。 - 阈值拦截:如果相似度低于 0.7,标记为潜在幻觉,拒绝输出。
六、 进阶:自动化敏感信息 (PII) 脱敏
在 RAG 场景中,我们可以在 Embedding 之前或生成之后进行脱敏。
代码思路
利用现成的 NLP 库(如 Presidio)进行扫描:
from presidio_analyzer import AnalyzerEngine
analyzer = AnalyzerEngine()
results = analyzer.analyze(text=ai_output, entities=["PHONE_NUMBER", "EMAIL_ADDRESS"], language='en')
# 自动打码:将 13800138000 替换为 [PHONE]
七、 总结:构建可信、合规的 AI 应用
「防护栏」不是为了限制 AI 的能力,而是为了让 AI 能够在安全的框架内服务于业务。随着技术的发展,轻量级的「安全模型」将会被部署在本地,为每一条 AI 回复保驾护航。