ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

意图识别实战:从规则匹配到传统机器学习,再到混合大模型方案

意图识别实战:从规则匹配到传统机器学习,再到混合大模型方案 做了快两年的对话系统和 AI Agent 相关的开发从最早期的规则引擎到后来的分类模型再到现在直接用大模型做意图识别这条路走了不少弯路。今天把这些经验整理一下给正在做相关开发的朋友做个参考。摘要意图识别是对话系统的核心。本文从规则匹配、传统机器学习到大模型梳理三代意图识别方案的演进与取舍并结合工程实践给出「高频意图用轻量模型、低频复杂意图交给大模型」的混合落地思路帮你少走弯路。为什么意图识别这么重要简单说意图识别就是搞清楚用户到底想干嘛。用户说一句话系统要判断他是想查信息、想办事、还是就是随便聊聊。判断对了后面的流程才能跑通判断错了整个对话就跑偏了。这个环节看似简单实际上是整个对话系统最核心的部分。意图识别准确率上不去后面再怎么优化都是白搭。第一代规则匹配简单粗暴最早做项目的时候没钱买模型也没什么数据就靠写规则。用户说什么关键词就对应什么意图。比如用户说 “退款”就触发退款流程用户说 “查订单”就触发查询流程。这种方式的优点是简单直接开发快好解释。缺点也很明显用户换个说法就认不出来了规则写多了之后互相打架维护起来崩溃边界情况特别多永远补不完那个时候我们光规则就写了上千条每次出问题就是到处找哪条规则写错了痛苦得很。第二代传统机器学习上了一个台阶后来数据积累多了开始用传统的分类模型。把用户说的话分词提取特征然后用 SVM、朴素贝叶斯这些模型做分类。效果比规则好不少用户换个说法也能认出来了。但还是有问题特征工程特别费时间要人工调小语种、口语化的内容效果不好新意图出来的时候要重新收集数据、重新训练迭代很慢而且传统模型对上下文的理解能力很弱用户说半句话它根本接不上。第三代大模型时代思路完全变了大模型出来之后意图识别这件事的玩法彻底变了。以前是 “先分类再处理”现在大模型本身就能理解语义你直接把用户的问题和系统的功能列表给它让它自己判断是哪个意图。这种方式的好处太明显了不用再训练专门的分类模型了新意图只要在提示词里加一句就行几分钟就能上线用户说什么奇怪的说法都能理解泛化能力特别强但也不是完美的。大模型做意图识别成本比传统模型高延迟也大一点。而且有时候会 “想太多”把简单的问题想复杂了。下面把三代方案放在一起对比一下方便直观感受各自的取舍维度规则匹配传统机器学习大模型准确率低依赖规则覆盖中依赖特征工程高语义理解能力强开发成本低写规则即可高需标注数据、调特征中主要靠提示词设计维护成本高规则易冲突、难维护中新意图需重新训练低新意图改提示词即可延迟极低低相对较高泛化能力弱换个说法就失效一般口语化效果差强能理解各种奇怪说法适用场景意图少、说法固定的小项目数据充足、意图相对稳定的场景意图复杂、变化快、追求泛化的场景小结规则匹配胜在简单直接适合小规模固定场景传统机器学习在数据充足时性价比不错但迭代慢、泛化弱大模型能力最强、维护最省心但成本和延迟更高。实际落地不必二选一把高频简单意图交给轻量模型、低频复杂意图交给大模型往往是最稳的组合。工程实践中的几个坑实际落地的时候我踩过不少坑这里列几个比较典型的1. 别全靠大模型混合方案最靠谱现在我们的做法是高频常用意图还是用轻量分类模型快速判断准确率高、速度快、成本低。低频复杂意图再交给大模型处理。这样既能保证性能和成本又能处理复杂情况。全用大模型不仅贵而且没必要。下面用一段 Python 伪代码示意这种混合路由的核心逻辑# 高频意图白名单这些意图用轻量分类模型快且便宜HIGH_FREQ_INTENTS{查订单,退款,改地址}# 置信度阈值低于该值不信任当前模型结果CONFIDENCE_THRESHOLD0.8defroute_intent(user_input:str,context:dict)-str:# 第一步先用轻量分类模型快速判断intent,confidencelight_model.predict(user_input,context)# 第二步意图优先级判断——高频意图直接走轻量模型ifintentinHIGH_FREQ_INTENTSandconfidenceCONFIDENCE_THRESHOLD:returnintent# 命中高频意图且置信度足够直接返回# 第三步低频或复杂意图降级交给大模型兜底llm_intentllm_model.predict(user_input,context)llm_confidencellm_model.confidence()# 第四步大模型结果也要过置信度阈值不够就走兜底流程ifllm_confidenceCONFIDENCE_THRESHOLD:returnllm_intent# 置信度都不够反问用户或转人工别硬猜returnfallback_to_human(user_input)核心就三步高频意图优先走轻量模型命中且置信度够就直接返回低频复杂意图降级给大模型最后无论哪个模型置信度不够都走兜底绝不硬猜。2. 一定要加置信度阈值大模型判断完意图之后不是直接就信了。我们会看它的置信度如果置信度不够高就走兜底流程要么反问用户要么转人工。别觉得有了大模型就万事大吉了它也会犯错。有个兜底机制系统才稳。3. 上下文很重要很多意图不是单看一句话就能判断的。用户前面问了什么会影响后面这句话的意思。比如用户说 “那这个呢”单独看这句话根本不知道啥意思但结合上下文就清楚了。所以做意图识别的时候一定要把上下文信息带上不要光看当前这一句。最后说两句意图识别这个技术从规则到传统机器学习再到大模型走了这么多年现在算是到了一个比较成熟的阶段。但不是说用了大模型就高枕无忧了。工程落地的时候还是要结合自己的业务场景该用什么方案就用什么方案别盲目追新技术。有什么问题评论区交流。
返回列表