大模型应用中的意图识别和槽位抽取
意图识别和槽位抽取是自然语言理解(NLU)的两个关键部分,会直接影响智能体的交互质量和用户体验。
**意图识别(Intent Detection)**的核心精准判断用户输入的真实目的。系统能将用户输入映射到预定义的意图类别(如"查询天气"、“预订餐厅”),这一步骤决定了后续业务流程的正确走向。若意图识别错误,整个对话流程就会偏离用户真实需求。
**槽位抽取(Slot Filling)**则负责结构化关键信息。从语句中提取出时间、地点、数量等实体参数。这些槽位值构成了执行具体操作的必备参数。例如在订餐场景中,必须准确提取"菜品名称"、"送餐地址"等核心槽位。
意图识别常见的方案:
① 关键词匹配 + 规则引擎: 基于人工定义的关键词、正则表达式或语法规则匹配意图
② 传统机器学习模型 将意图识别转化为文本分类任务,用特征工程 + 分类器实现。
③ 微调大模型方案(高精度、强泛化) 成本比较高
④ 提示词工程方案(零样本 / 少样本、低成本)
在大模型应用中,通常除了意图识别还有槽位抽取,所以提示词工程是最常用的
完成意图和抽槽的方案又分为几种
方案1. 意图和抽槽 直接在一个提示词中 例如
交通出行
- 描述: 用户问题是需要网约车、地铁、出租车等交通服务推荐的问题,比如:“帮我要打个出租车”,“帮我要打个网约车”,“我要坐地铁去野生动物园”,“怎么做网约车”。
- 参数:
- 交通方式: 用户提问的交通类型,从用户历史提问中提取交通方式,只提取网约车、地铁、出租车、公交车、其它这几类,如果提问是打车去某个位置,提取为:网约车,坐几路车能去宋城,提取为:公交车,如果如果提问没明确,可为空。
- 位置意图: 附近位置/实际位置,提问包含"附近","旁边","周边",为附近位置,否则是实际位置。比如"附近的厕所/小卖部/便利店/寄存点/码头/售票处/吸烟区"。
- 出发地: 提问中的出发地名称/当前位置,如南大门附近洗手间,提取为南大门,如果是提问杭州东站6号上车点,提取为:6号上车点,如果未明确,默认是当前位置
- 目的地位置类型: 提问中的目的地名称/设施名,如带我去东方明珠电视台,提取为东方明珠电视台;我附近的停车场,提取为停车场,未明确,不返回该参数。
- 地铁线路:提问中包含地铁线路,只提取数字,不要提取汉字,如1号线,提取为1。可为空。
- 标签:提问中对网约车上车点的特殊要求标签,只提取人少、最近、其它三个类型。如:帮我找个人最少的网约车上车点,打个车去西湖。帮我在最近的上车点打个车去西湖,提取标签为最近。如果未明确,不返回该参数。
优点
此方法的优点在于简单高效。通过提示词设计,无需添加复杂的额外算法或模型架构,就可使 AI 智能体快速具备意图识别和槽位抽取能力。在意图数量较少的情况下,这种方法能以较低成本实现较好效果,能满足用户需求。
缺点
当意图数量增多时,为每个意图定义槽位以及编写相应数量的 Few - Shot + CoT 内容,会使提示词长度大幅膨胀。会给模型带来巨大的处理负担,使模型难以准确地捕捉和理解其中的关键内容,容易出现混淆和错误的关联,进而影响其对意图和槽位的准确识别和抽取。
方案2: 意图识别和槽位抽取节点分离
第一个节点只做意图识别, 第二个节点做槽位抽取

优点很明显, 解耦架构清晰,降低了复杂度,支持场景更多
这种设计最大的问题就是,因为每个节点都要调用AI,所以系统延迟比较高,
方案3: 泛化意图 前置意图Rag召回
目的是需要智能体能够理解准确各种各样、形式各异但意思相近的问题,(比如方言类、反问语气、情绪化语气等),这就要求 LLM 节点得有很强的泛化和识别能力。
采用参数大、满血的大语言模型会比参数小的模型泛化能力强,固然准确性会有所提升。但比较贵,而且难以控制

参考: https://developer.aliyun.com/article/1675940
更多推荐
所有评论(0)