PII 检测 (PII Detection)
Semantic Router 提供了内置的个人身份信息 (PII) 检测功能,以保护用户查询中的敏感数据。系统使用经过微调的 BERT 模型,根据可配置的策略识别并处理各种类型的 PII。
概览
PII 检测系统:
- 识别 用户查询中的常见 PII 类型
- 执行 特定于模型的 PII 策略
- 拦截或掩码 根据配置处理敏感信息
- 过滤 基于 PII 合规性的候选模型
- 记录 策略违规以供监控
支持的 PII 类型
系统可以检测以下 PII 类型:
| PII 类型 | 描述 | 示例 |
|---|---|---|
PERSON | 人名 | "John Smith", "Mary Johnson" |
EMAIL_ADDRESS | 电子邮件地址 | "user@example.com" |
PHONE_NUMBER | 电话号码 | "+1-555-123-4567", "(555) 123-4567" |
US_SSN | 美国社会安全号码 | "123-45-6789" |
STREET_ADDRESS | 物理地址 | "123 Main St, New York, NY" |
GPE | 地缘政治实体 | 国家、州、城市 |
ORGANIZATION | 组织名称 | "Microsoft", "OpenAI" |
CREDIT_CARD | 信用卡号 | "4111-1111-1111-1111" |
US_DRIVER_LICENSE | 美国驾驶执照 | "D123456789" |
IBAN_CODE | 国际银行账号 | "GB82 WEST 1234 5698 7654 32" |
IP_ADDRESS | IP 地址 | "192.168.1.1", "2001:db8::1" |
DOMAIN_NAME | 域名/网站名称 | "example.com", "google.com" |
DATE_TIME | 日期/时间信息 | "2024-01-15", "January 15th" |
AGE | 年龄信息 | "25 years old", "born in 1990" |
NRP | 国籍/宗教/政治团体 | "American", "Christian", "Democrat" |
ZIP_CODE | 邮政编码 | "10001", "SW1A 1AA" |
配置
基础 PII 检测
在您的配置中启用 PII 检测:
# router-defaults.yaml
classifier:
pii_model:
model_id: "models/mom-pii-classifier"
use_modernbert: false
threshold: 0.9 # 全局检测阈值 (0.0-1.0)
use_cpu: true
pii_mapping_path: "models/mom-pii-classifier/label_mapping.json"
类别级 PII 检测
v0.x 新功能:在类别级别配置 PII 检测阈值,以便根据类别的具体要求和后果进行精细控制。
# 全局 PII 配置 - 默认应用于所有类别
classifier:
pii_model:
model_id: "models/mom-pii-classifier"
use_modernbert: false
threshold: 0.9 # 全局默认阈值
use_cpu: true
pii_mapping_path: "models/mom-pii-classifier/label_mapping.json"
# 类别特定的 PII 设置
categories:
# 医疗保健类别:针对关键 PII 的高阈值
- name: healthcare
description: "医疗保健和医学查询"
pii_enabled: true # 启用 PII 检测(默认:继承自全局)
pii_threshold: 0.9 # 更高阈值,检测更严格
model_scores:
- model: secure-llm
score: 0.9
use_reasoning: false
# 金融类别:针对金融 PII 的极高阈值
- name: finance
description: "金融查询"
pii_enabled: true
pii_threshold: 0.95 # 对 SSN、信用卡等非常严格
model_scores:
- model: secure-llm
score: 0.9
use_reasoning: false
# 代码生成:较低阈值以减少误报
- name: code_generation
description: "代码和技术内容"
pii_enabled: true
pii_threshold: 0.5 # 较低阈值,避免将代码工件标记为 PII
model_scores:
- model: general-llm
score: 0.9
use_reasoning: true
# 测试:禁用 PII 检测
- name: testing
description: "测试场景"
pii_enabled: false # 测试时禁用
model_scores:
- model: general-llm
score: 0.6
use_reasoning: false
# 通用:使用全局设置
- name: general
description: "通用查询"
# 未指定 pii_enabled 和 pii_threshold - 继承全局设置
model_scores:
- model: general-llm
score: 0.5
use_reasoning: false
配置继承:
pii_enabled:如果未指定,继承自全局 PII 模型配置(如果配置了pii_model则启用)pii_threshold:如果未指定,继承自classifier.pii_model.threshold
各类别阈值指南:
- 关键类别(医疗、金融、法律):0.9-0.95 - 严格检测,误报较少
- 面向客户(支持、销售):0.75-0.85 - 平衡检测
- 内部工具(代码、测试):0.5-0.65 - 宽松,以减少误报
- 公共内容(文档、营销):0.6-0.75 - 发布前进行更广泛的检测
模型特定的 PII 策略
为不同模型配置不同的 PII 策略:
# vLLM 端点配置
vllm_endpoints:
- name: secure-model
address: "127.0.0.1"
port: 8080
- name: general-model
address: "127.0.0.1"
port: 8081
# 模型特定的配置
model_config:
secure-llm:
pii_policy:
allow_by_default: false # 默认拦截所有 PII
pii_types: # 仅允许这些特定类型
- "EMAIL_ADDRESS"
- "GPE"
- "ORGANIZATION"
general-llm:
pii_policy:
allow_by_default: true # 默认允许所有 PII
pii_types: [] # 当 allow_by_default 为 true 时不使用
PII 检测如何工作
PII 检测系统的工作流程如下:
- 检测:PII 分类器模型分析输入文本以识别 PII 类型
- 策略检查:系统检查目标模型是否允许检测到的 PII 类型
- 路由决策:过滤掉不允许检测到的 PII 类型的模型
- 日志记录:记录所有 PII 检测和策略决策以进行监控
API 集成
PII 检测已自动集成到路由过程中。当向路由发送请求时,系统会:
- 使用配置的分类器分析输入文本是否存在 PII
- 检查候选模型的 PII 策略
- 过滤掉不允许检测到的 PII 类型的模型