基于Agent智能客服中的意图识别优化

01 架构与部署

方案概览

[图示已省略]

提示

搭建一个智能客服机器人,针对其意图识别和槽位抽取做准确性优化。

使用对象存储来存储音频文件,利用智能对话分析技术将音频转换为文字,最后通过通义千问大模型对对话内容进行分析,生成详细的分析报告及评分。

02 意图体系建立

搭建一个智能客服机器人,第一步就是要梳理清楚当前业务下有哪些知识点。

对比线上识别模块,业界在各种标准任务上已经沉淀出一批成熟的识别算法,能够满足不同需求。

[图示已省略]

提示

整套方案中,参与人员包括算法、场景负责人、AI训练师、外包标注人员四种角色。

其中算法人员熟悉各类识别算法,并提供工具支撑,同时基于对算法的了解从数据维度判断如何划分意图体系。

场景负责人拥有丰富的业务经验,对每一类业务有什么问题,应该如何应答提供专业意见。

AI训练师作为算法和场景负责人之间的桥梁,同时对算法和业务有一定了解,并将业务知识按照算法规则梳理出来与各方进行沟通调整。

外包同学基于AI训练师梳理的明确规则,进行数据标注。

整体流程

提示

梳理流程标准化为8个步骤(不包含图中的上线、回流阶段)。

第一阶段输出标注规则,主要包括每一个意图的明确定义,易混淆意图的区分方式,以及意图下常见的代表问法,用于标注人员更加具象的感受意图含义、边界。

同时,在这种模式下外包标注人员只需要判断相似问与所属代表问是否语义一致即可。将复杂的分类标注任务,转换为相似问判断任务,大幅降低标注难度,提升标注效率。

最后,针对第一阶段中少量代表问标注数据,以及第二阶段中大量相似问标注数据。我们设计了不同的异常检测工具,方便标注人员快速发现标注错误。

通过上述一整套标准化拆解任务,结合相似问挖掘、异常检测等工具,AI训练人效提升60%以上。

整套工具也沉淀到运营系统中,用于意图体系的持续调优,防止随着人员变动、业务变化而导致意图体系逐渐混乱。

03 意图理解

该部分分别对线上各个意图理解模块进行说明。

基于离线搭建的意图体系,线上系统需要对用户的问题进行精准识别,将用户问题识别到具体的意图知识点。

3.1初级方案A(提示词工程)

这是最初采用的方案,也是当前多数智能体所采用的常见方法。

[图示已省略]

在单一模型节点中,通过精心设计的提示词优化,实现意图识别与槽位抽取任务。

提示

提示词工程进行意图识别和槽位提取主要涵盖三个关键模块。

首先是 “定义意图槽位”,此处需精准框定智能体需识别的各类意图范畴,以及对应槽位的名称、数据类型与取值范围,为智能体打造详尽的任务字典。

其次是 “每个意图和槽位的 Few-Shot + CoT”,为每个意图搭配 Few-Shot 示例,使其领会如何从输入文本精准抽取槽位信息;同时融入 CoT,引导智能体逐步剖析用户输入,剖析语义结构,定位关键信息。

最后是 “输出格式”,明确规定智能体以结构化格式(如 JSON、XML 等标准数据格式)输出识别结果,提升交互流程的连贯性与效率。

3.2中级方案B(意图和抽槽节点分离)

[图示已省略]

经过一段时间的探索与实践,采用了意图识别与槽位提取分离的优化方案。

方案A导致的prompt膨胀以及准确性不足的问题需要做针对性解决。

方案特性

优点

提示

为后续的系统维护与功能迭代提供了极大的便利。

从系统结构层面来看,一个意图关联一个抽槽节点的配置方式,使得系统架构在逻辑上更为清晰简洁,极大地降低了结构的复杂程度。

同时,这种设计允许 prompt 长度支持更大。

因为模型在对单意图进行语义解析时,不会受到其他无关意图信息的干扰,能够更加专注于对复杂文本语境中的关键要素进行捕捉与解读。

提示

这种解耦架构在面对复杂多变的业务场景和不断变化的用户需求时,展现出了较强的适应能力。

当需要新增或修改某个意图及其对应的抽槽规则时,只需针对相应的抽槽节点进行调整,而无需对整个系统架构进行大规模的重构。

缺点

每一次调用都需要消耗一定的计算资源和时间,这就导致了整体系统的延迟增大。

这种架构下,每个意图和抽槽都是独立的节点,这意味着在实际运行中,系统需要分别调用AI来处理意图识别和抽槽任务,这无疑增加了系统的调用次数。

提示

这种延迟对于一些对实时性要求较高的应用场景来说,可能会成为一个明显的问题,影响用户体验。

适用场景

该方案更加适用于意图分支较为复杂且繁多,同时对延迟敏感度较低的业务场景。

在这些场景下,其优势能够得到更充分发挥。

3.3启发式问答

提示

虽然是一整套完善的意图体系及框架,但如果在对话中任由问题发散,还是会给识别带来阻碍。

通过对用户咨询前、中、后全流程的启发式应答策略,让用户实现“点、点、点”即可完成咨询。

在收敛用户问法、降低识别难度的同时,降低用户费力度,提升用户体验。

3.4高频问题识别

针对非点击的用户输入问题,需要通过意图识别算法理解用户意图。

如目前行业主流技术,文本分类、文本匹配是识别高频意图/问法的基础模式。

[图示已省略]

整个发展过程,识别效果在持续提升,但模型复杂度也在逐步增加,而且模型对硬件资源的要求也相应地越来越高。

提示

因此,通过领域预训练模型结合蒸馏、模型压缩等手段,在保持识别效果的前提下大幅降低对硬件资源的要求,同时提升模型的运行速度。

04 长尾问题识别

提示

由于业务复杂性以及对话本身的特性,有相当一部分会话中存在长尾问题。

这些长尾问题往往代表了用户的个性化需求,如果不能正确识别、应答,会给用户一种机械化的服务感觉,影响用户体验及机器人的解决能力提升。

很大一部分长尾问题的解决方案为非标准化流程,因此对其识别难度较大。

提示

需要抽象出一套完备的框架,同时保证每一部分的识别效果。

1)单句明确的长难句识别问题;

2)单句不明但结合上下文意图明确的上下文识别问题;以及

3)用户表述不明的模糊问题引导。

三种策略保持漏斗形识别,将不同流量分而治之,用于综合解决长尾问题。下面对每一种类型的识别方案进行说明。

4.1进阶方案C(意图识别优化:前置意图Rag召回)

进阶背景

提示

采用参数大、满血的模型固然准确性会提升,无法通过人工方式有效控制。

难以快速修复 Bad Case,且满血模型的使用成本和响应时长也会升高。

提示

将特异的问题问题对应到准确的意图上,是阶段性的重点任务。

采用了LLM提前泛化意图的方法,再通过 RAG 召回的方式,来解决之前那些智能体意图识别不准确的问题。

方案说明

[图示已省略]

提示

在前期方案基础上,加入了 RAG 召回能力,处理垂类和Query的意图识别。

在知识库里上传大量意图分类知识,用户提问时,先用 RAG 召回找到相似的 query 和意图对应关系,让大模型更好地理解垂类或个性化分类判定逻辑。

这个方案对模型推理和泛化能力要求不高,可以选用性价比高的模型。

意图知识库工作

意图语料种子

首先,**要根据具体的垂类行业来确定意图分类,**以及对每个意图进行精准的描述。

接下来,通过人工构造和收集线上的 Query 来获取意图语料。

由于下一步要进行模型泛化,所以这里的种子语料数量最好能多一些,尽量达到 30~50 个左右。

意图数据泛化

提示

利用 LLM 对种子语料生成一批同义句,运用基模理解强化机制进行同义替换。

每个意图都需要包含多种句式变体,涵盖口语化表达、地域化表达以及反问句转化训练等内容。

[已移除:营销/导流内容]

方案特性

优点

意图识别的准确性保持在较高水位。

通过将识别 Query 意图的工作,从 LLM 实时泛化识别过程转变为预泛化,从而掌控了项目整体的意图识别泛化能力水平。

提示

在面对线上出现的未被覆盖的 query 意图识别场景时,能够迅速做出响应并加以修复。

仅需通过添加知识库条目的方式,就能快速实现对该场景的覆盖,无需进行修改提示词以及调优等相对复杂繁琐的操作,大大提高了问题解决的效率。

缺点

方案需要对意图和问题数据开展泛化预处理工作,这在一定程度上增加了研发成本。

虽然在单轮会话中,意图识别能力表现良好,但在涉及多轮对话,需要综合多轮信息来综合判断意图的场景下,效果就显得不够理想了。

长难句识别

提示

在对话过程中,会存在长句问题,通用意图模型效果偏差。

在长句描述中,用户偏向于复杂表达,提取其中的关键信息是保证识别效果的关键。

[图示已省略]

对比使用通用意图模型,新模型在长句识别准确率上有提升,成为业务的一大亮点。

4.5上下文识别

提示

上下文多轮识别一直是对话系统中的难点问题。

由于智能客服系统意图体系的复杂程度(3000+意图),多轮识别难度进一步增大,先重点对多轮匹配工作进行说明。

提示

如图所示,探索了一套多轮匹配模型训练方案,在实际业务中准确率取得大幅提升。

[图示已省略]

这里对模型训练方式做一个简单说明。为了让模型能够从上下文中提取关键信息,我们将用户上下文与候选问题基于attention机制进行对齐。

经过处理后有用户的原始上下文输入,经过对齐后的上下文,以及候选问题。

分别将以及输入模型,经过模型特征抽取后分别得到表征以及。最终通过对比损失让两个表征更加接近,从而让模型关键信息提取能力增强。

4.6模糊问题引导

[图示已省略]

图6:一种用于补全用户问题的多因子分类框架

提示

由于断句、省略、倒述、错别字等情况,实际对话中用户经常会表述一些模糊问法。

盲目的反问甚至应答,都会打断对话的流畅性,影响用户体验。如何能像真人一样做到有针对性的精准反问一直是业界难题,系统需要定位到合适的反问时机,以及正确的反问内容。

提示

如图6所示,基于多因子识别设计了一套模糊意图识别、反问的策略。

不同于一般情况下将用户问题识别到一个明确意图,我们梳理发现,一个完备的意图一般由动作(退/换/修等等)、业务(发票/订单等等d)、状态(已下单/未收货等等)、问法(时间/地点/方式等等)四个维度组成。

提示

经过离线梳理、训练后,获取到一个因子识别模型,以及每个意图下的合法因子式。

在线上识别模块,系统识别到用户问题的意图以及因子式。

基于被识别到的因子式是否有效、因子式与意图是否匹配等情况,可以判断用户意图是否模糊,以及在模糊情况下如何针对性的反问。

整套方案上线后,模糊引导策略在触发率、点击率、准确率指标都有大幅提升。

[图示已省略]

图7:SimCTC:一种简单的用于短文本聚类的对比学习方法

4.7高阶方案D (合并意图抽槽节点 + 升级前置Rag召回能力)

[图示已省略]

现实场景中,业务需求往往远比预想的更为复杂。

例如,依据多轮对话内容准确判断意图和槽位,避免其在模型识别过程中相互干扰等问题,都极具挑战性。

方案关键部分

(1)意图及槽位CASE管理

提示

为优化多轮对话中的意图解析与槽位抽取,采用了一种基于知识库管理的高效策略。

包含【历史提问】、【最新提问】、【思考过程】、【处理】、【意图】、【槽位】等关键要素的样本案例,并借助知识库检索增强(Retrieval-Augmented Generation,RAG)能力进行统一管理。

提示

当用户提交新问题时,系统将多轮历史对话与当前查询相结合,通过知识库进行精准召回。

召回的案例将作为样本,对提示词进行改写,随后输入至大型语言模型(LLM)进行处理。

[图示已省略]

(意图槽位case 模版格式)

(2)组装历史会话召回

提示

通过RAG的语义检索能力,需要召回与用户多轮对话内容最匹配的案例(CASE)。

[图示已省略]

以此指导大模型如何高效处理当前任务。

为此,需要将用户的历史发言与当前查询(query)进行组合,再进行精准召回。

(3)降低意图响应延迟策略

[图示已省略]

提示

在项目推进过程中,发现部分用户意图可通过 FAQ(常见问题解答)模式。

于是直接将预设文案反馈给客户。

这种方式无需经过 LLM(大型语言模型)节点进行意图槽位处理和文案润色,从而降低部分意图分支的响应耗时。

提示

意图知识库中特别设置了一个【处理】字段,其值分别为【意图路由】和【直接回答】。

对于那些无需大模型处理的意图,将【处理】字段设置为【直接回答】。

在进行 query 召回后,会进行判断,若该意图被标记为【直接回答】,则直接将 RAG 中预设的回答文案迅速返回给客户。

提示

通过这种优化处理,不仅提高了智能体的响应效率,还确保了用户能够及时获得准确、简洁的答案,进一步提升了项目整体运行效果。

(4)新老意图切断策略

在多轮对话场景下,意图解析和抽槽过程易受干扰,主要体现在以下两个方面:

提示

话题迁移与意图混淆:

多轮对话中话题可能切换或延伸,用户表达可能涉及旧意图或新意图。

模型若无法准确追踪话题变化,容易混淆不同轮次的意图,导致意图解析不准确。 槽位更新与整合难题: 多轮对话中,槽位信息可能在不同轮次中补充或更正。

模型需要整合多轮信息以确定槽位值,若无法有效处理,会导致槽位抽取不准确,影响对话连贯性。

为了解决多轮对话中意图解析和槽位抽取易受干扰的问题,于是方案是:

提示

意图切断策略:

意图A的执行流程完全结束,清空意图A的历史会话记录。

[图示已省略]

这样可以避免意图A的信息对意图B的召回和后续处理过程产生干扰,从而提升意图解析和槽位抽取的准确性和独立性。

方案特性

优点

提示

方案C在确保节点延迟稳定的基础上,显著提升了在复杂意图分支场景下的准确性。

此外,针对线上意图抽槽过程中出现的Bad Case,我们可以通过维护知识库RAG进行快速修复,无需对智能体进行改动或重新发布。

缺点

提示

工作量相较于仅进行意图分类的泛化要大得多。

需要对数据进行泛化预处理,并对【历史提问】、【最新提问】、【思考过程】、【意图】、【槽位】等字段进行内容准备和标注。

因此,建议在前期泛化时,**每个意图仅提交 5-10 个 Case,**随着项目的推进,逐步对齐并控制成本。

05 数据回流

在构建AI智能体的过程中,**意图识别和槽位抽取是自然语言理解(NLU)**的两个关键部分,会直接影响智能体的交互质量和用户体验。

意图识别

提示

意图识别(Intent Detection)

核心作用在于准确判断用户的语义目的。

系统能将用户输入映射到预定义的意图类别(如"查询天气"、"预订餐厅")。

这一步骤决定了后续业务流程的正确走向。

若意图识别错误,整个对话流程就会偏离用户真实需求。

槽位抽取

提示

槽位抽取(Slot Filling)

则负责结构化关键信息。

从语句中提取出时间、地点、数量等实体参数。这些槽位值构成了执行具体操作的必备参数。

例如在订餐场景中,必须准确提取"菜品名称"、"送餐地址"等核心槽位。

二者共同构成语义解析的完整链路,直接影响对话状态的准确性。

方案横向对比数据

提示

数据测试样本: 采用已上线的出行行业智能体项目(上海地铁智能体),项目有13个预设意图分支,测评集数量443条用例。

[多项附件或图示已省略]

06 领域预训练模型

提示

以上模块是对智能客服系统中具体的识别模块介绍。

各模块中涉及的大量模型都是基于大规模预训练模型进行二次调优生成。

因此所有识别效果很大程度上决定于基础预训练模型的效果。

训练方式

[图示已省略]

图8:系统领域预训练模型架构图

可能因素

提示

当前通用预训练模型在智能客服领域无法充分发挥效果,主要有以下几方面因素:

1、没有融入智能客服相关领域数据集。

2、NSP(Next Sentence Prediction)任务无法充分学习到智能客服潜在语义关联性。

3、如何将多种任务类型很好的融合到预训练中,也将是预训练模型效果提升的关键。

IcsBERT

提示

基于典型问题,提出 IcsBERT (BERT for Intelligent Customer Service Domain)。

专门针对智能对话领域进行预训练效果提升。

除了针对性使用了对话领域数据集外,基于我们提出的提示性多任务并发训练方式。

将多个对话领域的关键任务融入到模型预训练当中,提升了预训练模型的效果。

训练任务

提示

针对构建的数据及智能对话领域的核心任务,设计了三种训练任务:

SOP任务:采用SOP(Sentence Order Prediction)扩展任务代替原始BERT中的NSP任务,预测当前文本是两句连续文本中的前一句、后一句还是随机句。

QA任务:将用户连续问题和客服连续问题进行合并,整理出标准QA(Question-Answer Matching)数据集。

QQ任务:将线上用户问题识别意图作为标签,通过lucene检索,同意图下的检索结果为正例,不同意图下的检索结果为负例。

提示性多任务并发训练方式采用不同的first token标签,引导不同任务预训练。

具体的,[CLS] token预训练学习SOP扩展任务、[QQ] token预训练学习相似度匹配相关任务、[QA] token预训练学习问答相关任务。