语义筛查安全护栏
语义筛查安全护栏按语义应用内容策略。你提供若干示例文本,AISIX 会阻断语义与之接近的流量,即使措辞完全不含相同的关键词。
关键词安全护栏匹配调用方输入的字面内容,语义筛查安全护栏匹配调用方想表达的意思,因此能应对为绕过固定模式列表而改写的尝试。它是关键词安全护栏的补充:关键词匹配保持精确、低成本且行为可预期,而语义筛查会在每个已筛查钩子中使用配置的 embedding 模型。
本指南将创建一个语义筛查安全护栏,通过 AISIX 发送命中和无关的流量,并验证 AISIX 会在调用上游模型前拒绝命中的请 求。
准备工作
开始前,请准备以下内容:
- 阅读安全护栏行为,了解钩子点、执行模式和失败策略。
- 与安全护栏位于同一环境的 embedding 模型。AISIX 会用它为每一段被筛查的文本打分。参见资源模型了解
embedding配置块,以及 Embeddings 了解它对外提供的端点。 - 以下配置路径之一:
- AISIX Cloud,其中包含环境、已接入的网关和具有写权限范围的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请混合云访问权限,请联系 API7。
- 加载声明式
resources.yaml文件的开源 AISIX 网关。
- 可以发送 Chat Completions 请求的模型别名和调用方 API Key。
curl。AISIX Cloud 路径还会使用jq。
筛查如何做出判定
每一段被筛查的文本都会被转成向量,并与你提供的示例比较,得到一个 -1 到 1 之间的相似度分数,1 表示语义完全相同。
| 条件 | 结果 |
|---|---|
文本对任一拒绝示例的分数达到或超过 deny_threshold | 阻断 |
配置了 allow_examples,且文本对每个允许示例的分数都低于 allow_threshold | 阻断 |
| 以上都不满足 | 放行 |
**拒绝优先于允许。**同时命中两个列表的文本会被拒绝,因此即使某条允许示例恰好与拒绝示例语义相近,也不会让流量绕过拒绝列表。
两种使用方式:
- 只用拒绝列表:除与拒绝示例相近的文本外,其余内容均放行。
- 使用允许列表:只放行与允许示例相近的文本,从而把安全护栏覆盖的流量限制在特定话题范围内。
在输入钩子中,AISIX 会从最新一条开始,分别筛查每条非空用户消息。把整段对话作为一个整体筛查会稀释分数:夹在长篇日常对话中的一句简短尝试会被当作噪声。text_source 默认为 user_messages;设为 all_messages 可同时包括系统消息和助手消息。
max_screened_texts 默认为 8,用于限制输入钩子上单次请求筛查的消息数;输出钩子始终把整条回复作为一段文本筛查,该上限在那里不起作用。超出上限的消息不会在该请求中接受评估。请根据必须筛查的最长对话历史设置该上限,尤其是客户端可能首次向 AISIX 提交既有对话时。