意图识别与路由:正则 → 小模型 → LLM 兜底
目录
意图识别要分层:高频走正则,常规走小模型,低置信才 LLM 兜底。路由再叠加置信度阈值与成本感知,避免动不动就上 RAG。
意图识别步骤
1. 正则匹配(关键字过滤)
- 适用:高频固定句式
- 规则:精准关键字、固定句式
- 可信阈值:
confidence: 0.95(固定,高于小模型 0.8,确保优先放行)
2. 小模型
- 适用:上一层未命中
- 阈值:高可信 ≥ 0.8;灰色 0.6~0.8;< 0.6 → unknown
- 仅当置信度 < 0.6 才调用 LLM 兜底
3. 大模型兜底
- 置信度上限锁死最大 0.75
- 理由:LLM 非专精分类,可靠性偏低,天然落在灰色区间,最终进澄清分支,不会高信任直通 RAG / 记忆检索
输出结构保持一致
source 标记产出层,便于日志分析;三层都可提炼 entities。
路由策略(决策分支选择器)
输入:用户 Query + 意图识别输出 + 上下文状态(槽位、轮次、历史路由等)+ 成本阈值 + 置信度
输出:选一条子链路:
- 直接回复(通用闲聊、无需检索)
- 澄清分支(优先触发)
- 触发:必填参数缺失、置信度 < 0.82、存在歧义
- 话术:A 模板化(推荐,约 90% 场景);B 轻量 LLM 生成
- 低成本工具(关键词检索、简单 DB 查询)
- 高成本链路(RAG、长期记忆、多轮知识库召回)
路由决策规则
1. 硬规则(优先级最高)
- 黑名单意图(闲聊、问候、情绪宣泄)→ 闲聊链路,禁止检索
- 空 Query、无有效实体 → 澄清
- 敏感指令 → 安全分支
2. 置信度阈值
- ≥ 0.82 且无歧义 → 才允许高成本 RAG / 记忆检索
- 0.6~0.82 → 强制澄清
- < 0.6 → 澄清 / 引导重述
成本感知控制
输入:候选链路、实时负载、配额、用户等级、单次预估开销
输出:放行 / 降级 / 阻断
链路成本等级:
- L0:直接 LLM 回复(极低)
- L1:关键词检索、简单 SQL(低)
- L2:向量 RAG / 长期记忆(高)——有准入门槛,不能作为默认备选
路由先选出「理论上最合适的链路」;成本策略再审核「这条链路现在能不能跑」。
多轮后 AI 开始叫「哥们儿」
归因
- 上下文污染(Role 变了):用户历史出现「哥们儿」,LLM 模仿风格(Few-shot 效应)
- 系统 Prompt 约束不足:缺少禁止非正式网络称呼的硬指令
- 意图 / 路由无人设校验:只管业务分支,没有风格过滤层
- 多轮累积:轮次越多越容易放松语气
解法
- 系统 Prompt 增强:强调角色,禁止「哥们儿 / 老铁 / 家人们」等
- 存 memory 时过滤:压缩用户对话时滤过黑名单词汇
- 后置输出护栏(必加):正则匹配违禁称呼
- 查 log,亡羊补牢:发现问题快修