意图识别 + 围栏
企业知识库:意图识别 + 围栏(安全围栏 / 边界围栏)
先厘清概念
- 意图识别:判断用户想问什么、该不该走知识库检索、要不要拒绝、要不要走业务接口
- 围栏(Guardrail,护栏 / 边界管控):拦截越界问题,防止 RAG“答非所问、越权回答、幻觉、跑出知识库范围、违规内容”,分为前置围栏、检索围栏、生成围栏、后置围栏。
一、RAG 意图识别:4 种主流实现方案
RAG 里的意图识别核心目标不是分类闲聊,而是决策路由:
路由分支: 1️⃣ 查询知识库 (RAG)|2️⃣ 调用工具 / 业务 API|3️⃣ 闲聊,不走知识库|4️⃣ 拒绝回答
方案 1:Prompt‑Based 大模型意图识别(最常用、上手最快)
工作流程
用户 query → 发给一个轻量 LLM(也可以用主模型),输出结构化 JSON 意图结果。
输出字段设计(标准模板)
{
"intent_type": "rag_query|chat|api_call|reject",
"topic": "产品售后问题",
"need_retrieval": true,
"retrieval_filter": {"product_id":"A001"},
"confidence": 0.95,
"reason": "用户询问售后保修政策,知识库包含该内容"
}
意图枚举定义
表格
| intent_type | 含义 | 路由动作 |
|---|---|---|
rag_query
|
知识库问题 | 进入向量检索→召回文档→生成答案 |
chat
|
闲聊、问候、情绪对话 | 直接模型回答,跳过检索 |
api_call
|
需要实时数据(订单、余额) | 调用后端接口,不走知识库 |
reject
|
违规、超出业务范围 | 直接拒绝,不走 RAG |
优点:开发快、不用标注样本;缺点:高并发成本高、偶发不稳定。适合中小项目。
参考系统提示词(可直接复制)
你是RAG路由意图分类器。
任务:判断用户问题是否属于本企业知识库可回答范围。
知识库范围:公司产品手册、售后政策、收费标准、常见问题。
禁止回答:时政、娱乐、无关闲聊、内部未公开数据。
输出严格返回JSON,不要多余文字:
{
"intent_type": "rag_query/chat/api_call/reject",
"need_retrieval": true/false,
"confidence":0~1小数,
"reason":"简短理由"
}
方案 2:轻量分类模型(小模型意图识别,高并发首选)
用文本分类模型:BERT/ERNIE、text‑cnn,做二分类 / 多分类
-
二分类:
是否需要检索知识库(0/1) -
多分类:
知识库问题 / 闲聊 / 实时查询 / 违规问题
优点:速度快、成本低、延迟稳定;缺点:需要标注数据集。
适合高流量线上生产环境。
方案 3:关键词 + 规则引擎(前置快速过滤)
适合简单场景:黑名单词、触发词 例:命中【订单号】→路由 API;命中【你好、谢谢】→闲聊。
一般只做第一层前置过滤,不能单独当意图识别。
方案 4:Query‑Rewrite + 语义向量召回匹配(语义意图)
计算用户 query 和 知识库文档标题 / 问题库的向量相似度。
- 相似度 > 阈值 →走 RAG 检索
- 相似度 < 阈值 →判定为超出知识库范围。
缺点:容易误判;适合和意图模型配合使用,不能单独作为围栏。
工业级推荐链路(标准生产流水线)
用户 Query →1. 规则黑名单过滤(前置围栏) →2. 意图识别(LLM / 小分类模型) →3. 路由: ・reject →拒绝 ・chat →直接回答 ・api_call →调用接口 ・rag_query →向量检索→重排→围栏校验→生成答案
二、RAG 围栏(Guardrail)完整体系:四层围栏架构
围栏本质:把回答锁死在知识库边界,防止越界、幻觉、违规、泄露
四层围栏:前置围栏、检索围栏、生成围栏、后置围栏
1)前置围栏(用户提问阶段,最优先)
目标:拦截坏问题,还没走检索就拒绝 执行时机:意图识别之前。
管控内容:
- 违规内容:色情、暴力、敏感提问
- 越界领域:知识库只回答产品问题,用户问股票、历史
- 攻击提示词:Prompt 注入、越狱指令
实现方式:
- 关键词黑名单
- 内容安全审核 API(百度 / 阿里云 / 字节安全)
- LLM 前置护栏 Prompt 校验
示例护栏 Prompt
如果用户问题不在【XX产品知识库】范围内,直接回复:
"抱歉,我无法回答该问题,请咨询产品相关问题。"
禁止编造知识库不存在的内容。
2)检索围栏(召回阶段,最关键的 RAG 围栏)
RAG 最常见坑:召回无关文档,然后模型顺着无关文档胡说;或者召回不到内容,模型凭空幻觉。 检索围栏 = 管控召回质量,只允许召回匹配的内容。
检索围栏手段清单
- 相似度阈值围栏 向量召回时,设置最低相似度分数。
例:相似度 < 0.75,判定【知识库无相关资料】,放弃检索,直接返回无答案,禁止大模型编造
日历
个人资料
diaba 寻求合作请留言或联系mail: services@jiucaiyuan.net
链接
最新文章
存档
- 2026年8月(7)
- 2025年4月(17)
- 2025年3月(25)
- 2025年2月(20)
- 2025年1月(2)
- 2024年10月(1)
- 2024年8月(2)
- 2024年6月(4)
- 2024年5月(1)
- 2023年7月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(11)
- 2022年5月(6)
- 2022年4月(33)
- 2022年3月(26)
- 2021年3月(1)
- 2020年9月(2)
- 2018年8月(1)
- 2018年3月(1)
- 2017年3月(3)
- 2017年2月(6)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(1)
- 2016年9月(3)
- 2016年8月(4)
- 2016年7月(3)
- 2016年6月(4)
- 2016年5月(7)
- 2016年4月(9)
- 2016年3月(4)
- 2016年2月(5)
- 2016年1月(17)
- 2015年12月(15)
- 2015年11月(11)
- 2015年10月(6)
- 2015年9月(11)
- 2015年8月(8)
分类
热门文章
- SpringMVC:Null ModelAndView returned to DispatcherServlet with name 'applicationContext': assuming HandlerAdapter completed request handling
- Mac-删除卸载GlobalProtect
- java.lang.SecurityException: JCE cannot authenticate the provider BC
- MyBatis-Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
- Idea之支持lombok编译
标签
最新评论
- logisqykyk
Javassist分析、编辑和创建jav... - xxedgtb
Redis—常见参数配置 - 韭菜园 ... - wdgpjxydo
SpringMVC:Null Model... - rllzzwocp
Mysql存储引擎MyISAM和Inno... - dpkgmbfjh
SpringMVC:Null Model... - tzklbzpj
SpringMVC:Null Model... - bqwrhszmo
MyBatis-Improper inl... - 乐谱吧
good非常好 - diaba
@diaba:应该说是“时间的度量依据”... - diaba
如果速度增加接近光速、等于光速、甚至大于...
最新微语
- 用AI重构自己的工作方式。
2026-08-08 20:26
- 在每件事情上花费的东西,就是生命的一部分,而我们花费的这些东西要求立即得到回报,或者在一个长时间以后得到回报。
2025-01-23 15:46
- 诺曼·文森特说:“并不是你认为自己是什么样的人,你就是什么样的人。但是你的思想是什么样,你就是什么样的人。”
2025-01-23 15:44
- 从今天起,做一个幸福的人。喂马,砍柴,(思想)周游世界
2022-03-21 23:31
- 2022.03.02 23:37:59
2022-03-02 23:38

发表评论: