大模型意图识别
文本分类
详见站内专题:文本分类
LLM 意图识别
【2024-8-19】怎样进行大模型应用程序中的意图识别
RAG 实际落地时,往往需要根据理解query意图。在 RAG 中路由控制流程,创建更有用、更强大的 RAG 应用程序
- 数据源多样性: query 路由到
- 非结构化文档: 语义检索,召回相关文档(图片/文本/pdf/word等)
- 结构化文档: Text2SQL, query转sql语句,从关系型数据库中查找相关信息,如 MySQL, PostgreSQL, Oracle, SQL Lite 等。
- API: 通过 Function Call 调用 Restful API
- 组件多样性: 相同数据用不同的向量存储, query 路由到:
- 向量库
- LLM
- Agent
- 提示模版多样性: 根据用户问题使用不同提示模版 Prompt Template
- query –(Router)–> Prompt1, Prompt2, …, Promptn —-> LLM —-> Response
- LLM 存在不确定性, 不可能100%稳定正确
路由 Router 分类
- 逻辑路由 Logical Router
- 自然语言路由 (Natural Language Router) 由不同 RAG 和 LLM 应用开发框架和库实现。
- LLM 路由 (LLM Router)
- LLM 补全路由 (LLM Completion Router): 从 prompt 里候选单词选择最佳, 作为 if/else条件控制流程, 案例 LlamaIndex Selector 原理 (LangChain 路由)
- LLM 函数调用路由 (LLM Function Calling Router): LLM 判断 query 对应哪个函数, 即路由,案例 LlamaIndex 中 Pydantic Router 原理,大多数 agent 工具选择方式
- 语义路由 (Semantic Routers): 利用 embedding 和 相似性搜索确定意图, 选择最佳
- 零样本分类路由 (Zero Shot Classification Routers): prompt 中指定分类集合, 直接进行分类
- 语言分类路由 (Language Classification Routers): 语种路由, langdetect python 包(朴素贝叶斯) 检测文本语种
- 关键字路由: query 匹配路由表中的关键字来路由
- LLM 路由 (LLM Router)
路由 Router vs 智能体 Agent
- 二者相似点多,Agent 将 Router 作为流程的一部分执行。
Agent 意图识别评估
评估指标
【2025-7-20】衡量 AI Agent 意图识别效果,不只是“识别对不对”,还要看“是不是有用”“能不能解决问题”
因此产品需从准确率、覆盖率、响应效果、用户行为四个维度全方位评估。
序号 | 指标名称(中文) | 定义 | 计算公式 | 例子 | 意义 |
---|---|---|---|---|---|
1 | 意图准确率(Intent Accuracy) | Agent 识别出的意图是否与用户真实想法一致 | 准确意图数 / 总意图请求数 | 用户说“这个标题感觉没吸引力”,Agent判断为“需要优化标题”,且用户采纳推荐标题,则视为命中 | 衡量识别“对不对”,是核心指标 |
2 | 意图覆盖率(Intent Coverage) | Agent 能识别的意图数量,占业务中用户真实意图的比例 | Agent支持意图数 / 用户表达中出现的全部意图数 | 用户频繁提及“能不能换背景音乐”,但Agent没支持该意图,则视为未覆盖 | 覆盖率低会让用户觉得“问了也没用”,限制可用性 |
3 | 响应正确率(Response Match Rate) | Agent 给出的响应是否对症下药,解决了用户的问题 | 有效响应数 / 总识别成功的意图数 | 用户说“换个爆点”,Agent识别成“优化标题”没错,但推荐的标题毫不相关,则响应不正确 | 识别准确≠任务完成,反映实际价值 |
4 | 用户修正率(User Correction Rate) | 用户是否对Agent的理解结果进行修正或重说 | 用户主动更换意图 / 总次对话数 | 用户说“太普通了”,Agent推荐封面,用户马上说“我说的是标题”,属于一次修正 | 体现意图识别是否“贴心懂人话”,用户感知强 |
✅ 一、意图准确率(Intent Accuracy)
- 定义:Agent 识别出的意图是否与用户真实想法一致。
- 计算:准确意图数 / 总意图请求数。
- 例子:用户说“这个标题感觉没吸引力”,Agent判断为“需要优化标题”,且后续用户采纳了推荐标题,则视为命中。
- 意义:衡量识别“对不对”,是核心指标。
✅ 二、意图覆盖率(Intent Coverage)
- 定义:Agent 能识别的意图数量,占业务中用户真实意图的比例。
- 计算:Agent支持意图数 / 用户表达中出现的全部意图数。
- 例子:用户频繁提及“能不能换背景音乐”,但 Agent 没支持该意图,则视为未覆盖。
- 意义:覆盖率低会让用户觉得“问了也没用”,限制可用性。
✅ 三、响应正确率(Response Match Rate)
- 定义:Agent 给出的响应是否对症下药,解决了用户的问题。
- 计算:有效响应数 / 总识别成功的意图数。
- 例子:用户说“换个爆点”,Agent识别成“优化标题”没错,但推荐出的标题毫不相关,则响应不正确。
- 意义:识别准确≠任务完成,响应正确率反映实际价值。
✅ 四、用户修正率(User Correction Rate)
- 定义:用户是否对 Agent 的理解结果进行修正或重说。
- 计算:用户主动更换意图 / 总次对话数。
- 例子:用户说“太普通了”,Agent推荐封面,用户马上说“我说的是标题”,这属于一次修正。
- 意义:体现意图识别是否“贴心懂人话”,用户感知强。
对话意图识别
【2025-3-21】大模型对话系统中的意图识别 含图解、代码
意图识别相关技术:基于规则、向量检索、深度学习、大模型等多种方法,以及处理多轮对话的上下文窗口法和对话状态追踪法。
以酒店预订对话为例展示了多轮意图识别的实际应用。
较小规模的模型在处理长对话时表现欠佳:
- 当对话超过3轮且每轮内容较多时,模型容易混淆上下文关系
- 对话长度增加,语义理解负担加重,回复质量明显下降
- 多意图交织的复杂对话场景下,准确率显著降低
解决思路
- 思路1:截断历史对话
- 最简单的方法是保留最近几轮对话,舍弃更早的内容。这种方法虽然直接,但会导致上下文连贯性断裂,影响对话体验。
- 思路2:上下文语义分割和槽位关联
- 将对话分解为不同的语义单元,并建立关联关系,保留关键信息:
- 上下文语义分割:识别对话中的主题段落,保留关键信息
- 槽位关联:跟踪对话中出现的实体信息(如产品名称、数量等),便于后续使用
- 将对话分解为不同的语义单元,并建立关联关系,保留关键信息:
- 思路3:基于多路多轮数据的微调
- 针对大模型进行特定任务的微调,提升模型在多轮对话中的表现
单轮
单轮意图识别是指仅基于用户的单一输入判断其意图,不考虑历史对话内容。
技术方案
- 规则
- 优点:实现简单,可解释性强
- 缺点:缺乏灵活性,难以覆盖表达的多样性
- 向量检索方法
- 将用户输入与预先准备的意图示例转换为向量(如 SentenceTransformer),通过计算相似度确定最接近的意图。
- 优点:可以捕捉语义相似性,不局限于关键词匹配
- 缺点:依赖于示例的质量和数量,需要维护向量库
- 大模型
- 利用预训练大模型的强大语义理解能力来识别意图。
- 优点:语义理解能力强,部署简单,可处理复杂表述
- 缺点:响应延迟较高,成本较高,黑盒特性不便于调试
- 混合方案
- 结合多种方法的优势,构建更强大的意图识别系统。
多轮
与单轮对话相比,多轮对话具有以下特点:
- 上下文依赖性:后续轮次的意图理解依赖于前面轮次的内容
- 意图转换:用户可能在对话过程中切换话题或改变意图
- 省略现象:用户可能省略已在上文中提及的信息
- 指代现象:用户使用代词指代前面提到的实体
多轮意图识别比单轮更为复杂,需要考虑对话历史和上下文信息。它处理的是连续多轮对话中意图的变化和延续。
实现方法
- (1) 上下文窗口法
- 保留最近N轮对话作为上下文,综合考虑整个窗口内的信息
- (2) 对话状态追踪法
- 维护对话状态,跟踪意图变化和槽位填充情况。
- (3) 多轮对话意图识别的大模型方法
- 利用大模型的强大上下文理解能力,直接处理复杂多轮对话。
Agent 意图识别难题
【2025-8-6】Agent意图识别有哪些挑战?深度解析8大难题
智能Agent理解用户需求的核心环节,意图识别始终被用户表达的灵活性、场景复杂性所困扰。
案例
- “苹果多少钱”的歧义
- “改到周五”的上下文依赖
- “查订单+取消订单”的多意图混合
深度拆解8大核心挑战
- 从自然语言的模糊歧义
- 长对话信息稀释
- 到长尾意图冷启动
- 专业领域知识依赖
- 动态意图演化等痛点
均对应给出可落地的技术方案:
- 从BERT/GPT的深层语义建模
- 会话状态追踪(DST)的上下文管理
- 少样本学习解决长尾问题
- 知识图谱融合适配专业领域……
解决意图识别难题
- 本质是“理解用户表达的复杂性”和“适配场景多样性”的平衡
- 解决方案:结合语义理解(预训练模型)、上下文建模(DST)、领域适配(微调/知识图谱)、动态学习(增量学习)等技术
- 精准识别+用户体验质检找到平衡
- 从用户交互场景出发,让模型不仅“能识别”,更能“懂人心”
- 既是难点,也是agent落地核心竞争力
难题 | 难度 | 说明 | 示例 | 分析 | 解决方案 |
---|---|---|---|---|---|
自然语言模糊/歧义 | 高 | 用户表达含糊、歧义、不完整,字面含义与真是意图脱节 | 苹果多少钱:水果还是手机? 订明天的票:机票/火车票/电影票 太吵了:关音乐/调小空调/换安静环境 |
字面意思无法定位意图,需要结合语境/外部知识消歧 | 深度语义建模+知识融合 上下文工程辅助大模型理解用户表达的深层逻辑,如:订明天的票,结合用户历史出行记录,推断出高铁票 引入领域知识图谱:实体关联业务知识,辅助消解指代、多义,如:乔丹很厉害,图谱中乔丹曾效力于公牛队,识别出迈克尔乔丹,而不是演员乔丹 高歧义表达设置规则校验,订票场景,根据出发目的地距离判断类型,地铁票/机票 |
上下文依赖与多轮对话信息稀释 | 中 | 历史对话中早期信息容易遗忘 | 周三去北京,改造周五,两句话间隔越远(超过5轮),越容易淹没 | 动态追踪上下文,提取关键信息 | 会话状态跟踪(DST)+长上下文压缩 DST记录关键实体(北京,周三), 检索历史会话补全意图,改造周五→时间改造周五 长对话使用上下文压缩技术,保留核心实体与意图,transformer注意力机制 引入记忆网络,对话历史存储为记忆槽位,历史会话有“过敏”,“这个要能吃吗”关联“无过敏成分”校验 |
多意图与复合查询 | 高 | 用户在单轮/多轮中,同时表达多个意图,需要拆解、排序 | “查下订单,没发货就取消”包含两个意图 “订上海机票,再查后天天气” |
多意图区分主次顺序,避免遗漏/误判 | 多标签分类+图神经网络(GNN) 多标签分类模型输出多意图概率,查询订单(0.95),取消订单(0.8) GNN建模意图顺序关系,“订单查询”是“取消订单”的前提,优先处理 复合意图按任务依赖拆解子步骤,依次处理 |
长尾意图与冷启动问题 | 低 | 高频意图数据过剩(查天气),而低频意图样本稀缺,长尾意图(颐和园停车场容量) | 电商客服:退货/改地址,占80%,保税仓发货时间/发票抬头修改,占20%,新上线的宠物托运业务没标注数据 | 新业务缺乏标注数据,模型难以适配 | 少样本学习+数据合成 prompt tuning, 长尾/新意图设计提示模版 大模型合成数据,扩充数据集 新业务预设基础意图体系,宠物托运包含证件查询+价格咨询,结合用户反馈不断迭代,“狗能托运吗” |
域外意图识别 | 中 | 超出范围的意图,需得体拒绝,而不强行匹配 | 问天气机器人,“如何修电脑” | 明确区分域内/域外意图,生成合理拒绝话术 | 专门分类器+置信度阈值 域内/域外分类器,用域外样本增强识别能力 对识别结果设置阈值:过低(<0.7)触发拒绝机制,”这个问题暂时无法回答” 结合用户反馈优化阈值:用户频繁问“修电脑”,人工设置高频域外意图,拒绝话术 |
隐含意图深层推理 | 高 | 语言背后潜藏真实意图,需要读懂弦外之音 | 最近有点忙→找代办事项代理 这个方案不太对→修改方案 孩子明天上学→订早起闹钟 |
规则/基础模型难以捕捉开放域隐含意图,预设类别无法覆盖所有可能性 | 大模型推理+行为序列分析 GPT-4/Claude深度推理,通过因果链分析挖掘隐含意图,忙→没时间处理→需要代办 结合用户行为序列,如多次设置闹钟、查上学路线,将上学与闹钟意图关联 低置信度隐含意图,通过多轮追问澄清,“最近很忙,是要帮忙安排日程吗” |
领域知识依赖 | 中 | 金融/医疗等垂类意图识别需要专业术语/规则,模型缺乏会出错 | 金融领域,“赎回理财”要区分“定期理财”/”活期理财” .=医疗场景,“查报告”要关联业务规则“检验项目→科室→出报告时间” |
如何让大模型获得并遵循领域知识 | 融合知识图谱+领域微调 构建领域知识图谱:金融“产品类型-赎回规则”,医疗里“检验项目-科室”,意图识别结合知识检索,领域知识作为上下文,改写原文 领域数据微调:金融对话、医疗病例,预训练、微调模型(bert→finbert),强化术语理解 加入合规校验模块:金融领域需要反洗钱规则过滤,避免推荐高风险操作 |
动态意图烟花与用户目标跳转 | 高 | 用户意图动态变化,甚至前后矛盾,需要实时调整方向 | “我想定明天上海机票”,接着“算了还是高铁吧”,“下周走也行” “能不能改下,感觉哪里不对” 未明确修改标题/封面/内容 |
模型要跟踪意图变化,避免被旧意图束缚 | 增量学习+引导式对话 增量学习:弹性权重巩固(EWC)学习新意图时(改高铁)保留旧意图(订机票)关键参数,避免学新忘旧 引导式提问,拆解模糊意图:“你想改标题,还是封面”,复杂意图拆解成清晰的任务路径 会话状态动态更新:实时刷新用户目标,确保匹配最新意图,“出行方式机票→高铁,时间明天→下周” |
案例
亚马逊
【2024-10-2】 多轮场景中的意图识别方案: cot 方法 + SetFit(transformer微调)
hybrid system that combines SetFit and LLM by conditionally routing queries to LLM based on SetFit’s predictive uncertainty determined using Monte Carlo Dropout.
阿里云
阿里云 PAI 平台
【2025-2-19】基于LLM的意图识别解决方案
场景
- 智能语音助手领域,用户通过简单的语音命令与语音助手进行交互。
- 例如,当用户对语音助手说“我想听音乐”时,系统需要准确识别出用户的需求是播放音乐,然后执行相应操作。
- 智能客服场景中,挑战则体现在如何处理各种客户服务请求,并将它们快速准确地分类至例如退货、换货、投诉等不同的处理流程中。
- 例如,在电子商务平台上,用户可能会表达“我收到的商品有瑕疵,我想要退货”。
- 这里,基于LLM的意图识别系统要能够迅速捕捉到用户的意图是“退货”,并且自动触发退货流程,进一步引导用户完成后续操作。
基于LLM的意图识别解决方案
- 准备训练数据
- 参照数据格式要求和数据准备策略并针对特定的业务场景准备相应的训练数据集。您也可以参照数据准备策略准备业务数据,然后通过智能标注(iTAG)进行原始数据标注。导出标注结果,并转换为PAI-QuickStart支持的数据格式,用于后续的模型训练。
- 训练及离线评测模型
- 快速开始(QuickStart)中,基于Qwen1.5-1.8B-Chat模型进行模型训练。模型训练完成后,对模型进行离线评测。
- 部署及调用模型服务
- 当模型评测结果符合您的预期后,通过快速开始(QuickStart)将训练好的模型部署为EAS在线服务
流程图
伯克利 RouteLLM
模型与成本间,寻找平衡点
【2024-7-1】加州伯克利 基于偏好数据的大语言模型路由框架
选择哪个模型时,要在性能和成本之间做出权衡。更强大的模型虽然有效,但成本更高,而能力较弱的模型则更具成本效益。
论文提出了几种高效的路由模型,推理过程中动态选择更强大或较弱的LLM,旨在优化成本与响应质量之间的平衡。
利用人类偏好数据和数据增强技术的训练框架来提升这些路由器的性能。
论文的方法在某些情况下显著降低了成本——超过2倍——同时不牺牲响应质量。
腾讯PCG+哈工大 RL
【2025-4-18】腾讯+哈工大提出 组相对策略优化(GRPO)和奖励驱动的课程采样(RCS)
- 解读:腾讯研究团队提出意图检测新范式:强化学习+奖励机制,泛化能力显著提升 (暴涨47%)
AI 智能助手准确理解用户的意图(Intent Detection)并路由至下游工具链是实现这些功能的第一步, 而工具的快速迭代、多样化、工具之间关系的复杂化,给意图识别带来新的挑战
- 模型在应对新意图时普遍存在性能衰减问题。
- 如何在开源的轻量级 LLMs 上训练泛化性更好、鲁棒性更强的意图识别模型,使得模型能够更准确理解未见场景的意图至关重要。
腾讯 PCG 社交线的研究团队,针对 AI 智能助手在意图识别方面临的泛化性难题,创新性地采用强化学习(RL)训练方法,结合分组相对策略优化(GRPO)算法和基于奖励的课程采样策略(Reward-based Curriculum Sampling, RCS), 将其创新性地应用在意图识别任务上,显著提升模型在未知意图上的泛化能力,攻克了工具爆炸引发的意图泛化难题,推动大模型在意图识别任务上达到新高度。
实验表明,相比于传统的监督微调(SFT)方法,该方法在未见意图和跨语言能力上表现更佳。除了完全新的未见意图,该工作还比较了对已知意图进行拆分、合并等实际产品场景会遇到的真实问题
此外,研究还发现引入思考(Thought)以及选择预训练或指令微调模型作为基础,对模型性能影响不大,但严格的输出格式约束至关重要。
贡献
- 证明在意图检测问题上,通过强化学习(RL)训练的模型在泛化能力上显著优于通过监督微调(SFT)训练的模型,体现在对未见意图和跨语言能力的泛化性能大幅提升。
- 除了完全新的未见意图,该工作还比较了对已知意图进行拆分、合并等实际产品场景会遇到的真实问题。
- 通过基于奖励的课程采样策略进一步增强了 GRPO 训练效果,有效引导模型在训练过程中聚焦于更具挑战性的样例。
- 强化学习过程中引入思考(Thought),显著提升了模型在复杂意图检测任务中的泛化能力。在更具挑战性的场景中,Thought 对于提升模型的泛化能力至关重要。
- 在意图识别任务中,无论选择预训练模型(Pretrain)还是指令(Instruct)微调模型作为基础,经过相同轮次的 GRPO 训练后,两者性能相近。这一结果与传统训练经验有所不同。
该研究为解决工具爆炸背景下的意图识别难题提供了新思路。
方法
GRPO:强化学习优化意图识别
- 用GRPO方法对意图识别模型进行训练。
- 训练过程中,设计了两种基于规则的奖励函数:
格式奖励
(Rformat)和答案奖励
(Ranswer)。- 格式奖励确保模型输出严格遵循预定义的格式,而答案奖励则评估模型预测的意图是否与真实标签完全匹配。
- 通过这两种奖励函数的加权组合,引导模型在训练过程中既关注输出的结构正确性,又注重意图识别的准确性。
RCS:聚焦挑战性样本
- GRPO训练早期,模型能够快速收敛到与监督微调(SFT)相当的性能水平,但随后奖励方差变得极小,模型对挑战性样本的关注度降低。
两阶段训练方法,重点根据样本的难度选择训练样本:
- 第一阶段:整个数据集上训练模型,限制步数,避免使用较简单的数据,以确保模型从具有挑战性的示例中学习。
- 第二阶段:集中于通过评分机制识别的难样本,使模型能够在具有挑战性的案例上得到改善。
为此,引入了离线奖励驱动的课程采样策略。
- 首先,用GRPO方法对整个训练数据集进行训练,记录每个样本在训练过程中的奖励值。
- 然后,将数据分为简单样本和挑战性样本,先在简单样本上进行初步训练,再在挑战性样本上进行深入训练。
- 这种课程学习方法使模型能够持续关注那些尚未完全掌握的样本,从而提高整体性能。
思考
(1)RCS 是否必要
RCS方法通过在训练过程中优先选择更具信息量的训练实例,有效地解决了GRPO训练框架中简单样本引入的冗余问题。
实验表明,RCS方法在仅使用60%完整训练数据集的情况下,仍能取得与使用完整数据集的SFT和GRPO方法相当的性能。
(2)难易样本比例
随着正例比例的增加,模型的总体性能呈现下降趋势。
这表明,挑战性数据在第二训练阶段的相对集中度对模型解决困难案例的能力至关重要。
(3)thinking是否必要
强化学习过程中引入“Thinking”(思维链)过程是否必要。
- TODAssistant数据集上,不包含思维过程的模型在域内测试中表现更好,但其泛化能力显著降低。
- 然而,与预训练模型和SFT训练的模型相比,这些模型的泛化能力仍然有显著提升,表明强化学习方法本身对模型泛化提供了内在优势。
(4)instruct模型必要?
尽管意图检测需要模型具备强大的任务理解和分类能力,但 Base Model基础模型在经过GRPO训练后,其性能与指令模型相当。
- 模型的能力主要是在预训练阶段获得的,后续训练只是帮助模型更好地利用其固有能力。
- 基础模型在宽松格式奖励下先减少后增加的完成长度,但这种增加并没有引入有价值的信息,而是增加了与任务无关的内容。相比之下,指令模型在两种奖励函数下的完成长度保持不变。
这表明
- 类似于R1的强化学习训练确实试图增加长度以获得更高的奖励,但在相对简单的意图检测任务中,真正的“顿悟时刻”不太可能出现,因为上下文逻辑有限,不需要模型进行深入推理。
效果
不仅能提升模型在已知任务上的性能,更重要的是显著增强了模型在未见任务、细分任务、组合任务以及跨语言场景下的泛化能力。
MultiWOZ 2.2和TODAssistant两个数据集上进行了广泛的实验。实验结果表明,基于RL的模型在泛化能力上显著优于SFT模型。
(1)域内测试集
- 无论是SFT还是GRPO训练的模型,都能显著提升意图识别的性能。
- 然而,仅使用RL(GRPO)在相同训练数据上并未能超越SFT的性能。
(2)泛化场景下,GRPO模型展现出显著优势。
TODAssistant 三个泛化测试集上
- SFT模型的性能显著下降,尤其在细分和组合测试集上,SFT模型的预测被限制在训练期间见过的10个类别中。
- 相比之下,GRPO模型在所有三个测试集上都表现出色,保持了超过90%的准确率。
跨语言和跨任务场景中,GRPO方法仍能保持强大的性能,进一步凸显了其相对于SFT方法的优越性。
另一个数据集上,GRPO训练的模型在大多数类别上的表现比SFT训练的模型高出20%以上。
这表明
- 已知任务上,SFT可能更加高效。
- 未知任务上,GRPO模型能够有效地学习指令理解和推理,从而具备更强的泛化能力
展望
研究:
- 将离线RCS转变为在线RCS,以更高效地选择优质样本;
- 从单意图检测扩展到多意图检测任务,以应对现实对话任务的复杂性;
- 探索强化学习在TOD系统的其他方面(如对话策略和响应生成)的应用;
- 深入研究“顿悟时刻”现象的深层次原因,逐步增加更加贴近复杂场景的意图识别、Function Call等问题,探索在任务型对话模型的自我反思、自我纠正和自我指导能力。