文章内容更新请以 WGrape GitHub博客 : 详解AI搜索关键技术之意图分析 为准
本文部分内容参考书籍《大模型应用落地:实战AI搜索》,此书籍在各大平台均有销售,如需本书籍请 点击查看此书籍 。
一、背景
本文原创,著作权归WGrape所有,未经授权,严禁转载。
搜索引擎技术历经二十余载的演进,其核心始终围绕着如何更精准、高效地理解并响应用户需求。所以,无论是自然语言处理的深化、检索效率的提升,还是排序算法的持续优化,其终极目标皆在于打造一个更“懂”用户的搜索引擎。但是如何做到更懂用户呢?意图分析便是其中重要的一项技术。
如今,随着大模型技术的发展,得力于AI技术的深度赋能,搜索引擎的智能化升级已成为行业发展的必然趋势。在此背景下,意图分析技术作为连接用户需求与精准服务的核心桥梁,其重要性愈发凸显。
二、介绍
意图分析是自然语言处理的关键技术,它通过将用户的语音或文本输入归类到预定义的意图类别,来理解用户的需求。其本质是一项文本分类任务,因此预定义清晰的意图类别是前提。若意图定义模糊或覆盖不全,即便后续识别算法再精妙,也难以真正理解用户需求。为特定场景精准定义一套全面且清晰的意图体系,是确保意图分析准确有效的关键。
1、应用场景
意图分析虽为文本分类,却与情感分析等普适性分类(如积极/消极/中立)不同,意图类别高度依赖具体应用场景。例如,电商场景的意图可能是商品查询、对比、加购、下单;而客服场景则可能是咨询、投诉或建议。
因此,在AI搜索领域,意图分析的核心作用在于对用户的语言输入进行全面覆盖与深度解析,并通过精准“分类”来完整识别其深层潜在意图,确保不遗漏任何关键诉求。
2、常见实现
目前,最常见的意图分析实现方式是设计一套通用的意图分类体系,并通过提示词工程来引导模型进行分类。
(1) 系统提示词
我们先设计系统提示词,以下为一个典型的系统提示词。
# 角色
你是一个意图分析器,负责将用户问题进行归类。
## 意图类目
用户的问题主要分为如下几个意图类目。
- 获取信息(access_information) :比如”什么是牛顿第二运动定律“等。
- 知识学习(learn_and_explain) :比如”从物理学科的角度,详细解析并教会我学习牛顿第二运动定律“等系统的学习一个复杂的知识,需要详细的解析等。
- 文章写作(writing) :比如帮忙拆解需求并写一篇某个领域的文章等。
- 对话互动(chat):比如用户说“你好”等,表示只是想进行一些对话互动。
## 返回格式
{
"intention": ""
}
## 开始
请根据用户输入的问题,按照格式返回一个合适的意图。
(2) 使用示例
上面这个系统提示词通过预设固定分类标签(示例中为4类)进行意图识别,虽然能覆盖基础场景,但在处理复杂用户提问时存在明显局限。比如,我们准备如下提问内容。
先搜索最新的新闻材料,然后提取出符合高中生价值观的作文主题,最后基于这个主题与新闻材料写一篇800字的作文。
当我们把上述内容输入给模型后,其输出如下所示。
{
"intention": "writing"
}
在此示例中,用户请求被单一归类为“文章写作”。这种实现方式虽能完成意图的初步分类,但分类粒度较粗,往往只能识别最终意图,而忽略了用户请求中可能包含的多个步骤性“子意图”。因此,对于需要多步骤协同处理的复杂任务而言,这并非理想方案。
三、主要问题
目前在意图分析的实践中,主要面临以下核心挑战。
(1) 输入不规范
用户输入常包含错别字、网络热词、冗余停顿词及语气助词等不规范现象,这直接增加了意图获取的难度,如同不懂外语的大堂经理面对外国客人,难以理解用户需求。 过往技术对此类问题处理效果有限,但如今大模型凭借其强大的通用自然语言理解能力,已能显著缓解甚至解决大部分输入不规范带来的理解障碍。
(2) 意图不明确
用户表达的多样性,尤其是在输入内容过短时,极易导致意图模糊。例如用户只输入“买票”这两个字,无法分辨是想买火车票、演唱会门票还是电影票。如何有效消解这种歧义,是意图分析面临的一大难题。目前对于这种问题,常见的解决方案是基于用户画像及推荐算法,推测并选择最符合用户习惯或偏好的意图。
(3) 多意图问题
用户常在单次输入中表达多个意图,这在智能家居和智驾助手等场景中尤为常见,例如:“请先关闭车窗,再把空调温度开到29度,然后加热座椅,最后随机播放一首歌曲。”在AI搜索领域中,也会存在此类情况,如用户提问:
给我搜索一下最新的新闻材料,然后提取出一个符合高中生价值观的作文主题,最后基于这个主题与新闻材料写一篇800字的作文。
所以,如何准确识别并有序处理这种多步骤、多意图的请求,对意图分析能力提出了更高的要求。
四、优化方向
为寻求更优方案,我们可将意图分析类比为“大堂经理”:无论是银行、医院还是餐馆,大堂经理的核心职责并非直接解决问题,而是遵循一个标准流程:首先接收咨询并明确用户的核心需求,继而思考解决问题的路径与方法,最终提供精准的引导与分流方案。
现在,我们再回归到意图分析本身。意图分析的优化方向,正是借鉴这一逻辑,使其不仅能识别意图,更能辅助后续的任务规划与执行。
1、识别意图(明确用户的核心需求)
在识别意图阶段,需聚焦用户根本诉求,剥离“搜索最新新闻材料”“提取作文主题”等过程性描述,此类步骤将由后续机制处理,因此此处仍专注于精准识别用户的最终意图,并将其重新划分为以下4类。
(1) 方法类意图
涵盖需要详细解答、深度解析或专业指导的问题,侧重于“如何做”或“为何如此”的专业阐释。
(2) 创作类意图
包含各类写作、生成任务,不仅限于文章撰写,还包括报告、文案等内容的创作。
(3) 总结类意图
针对获取信息、简短回答或概要总结的需求。其与方法类意图的关键区别在于:总结类意图追求快速、简洁的答案,而方法类意图则需要详尽、系统性的解析。
(4) 无意图
指与AI进行日常闲聊、情感交流或一般性互动的场景,此类交互不以特定任务达成为核心目标。
2、思考推理(思考解决问题的路径)
基于识别的意图,下一步是思考:为达成此意图,需要执行哪些具体步骤或操作?这一过程模拟人类解决问题的逻辑,即从用户最终意图出发,分析是否需要外部资源(如联网搜索)、是否采纳用户指定步骤(如“先搜索再提取主题”)等,最终形成清晰的任务拆解思路。
这本质上是一个基于思维链(Chain-of-Thought)的推理过程,类似于人类解决问题时的深度思考方式:即从最终目标出发,逐步拆解实现该目标所需的动作与具体步骤。
3、生成规划(提供引导与分流方案)
经过思考推理后,虽然已形成实现用户意图的步骤逻辑,但这些逻辑仍停留在“思维层面”,缺乏机器可直接解析的结构化格式。因此,生成规划的核心目标是将抽象的推理步骤转化为机器可执行、可追踪的结构化任务列表,明确每个步骤的动作类型、目标及顺序,从而为后续的任务执行系统提供精准的“引导与分流方案”。
{
"plan": [
"第1步应该如何……",
"第2步应该如何……",
"……"
]
}
五、最终实现
在明确了意图分析的优化方向后,我们现在重新实现。
1、系统提示词
以下是优化后的完整系统提示词,旨在引导模型完成“识别意图、思考推理、规划生成”的全流程。
# 角色
你是一个意图分析器,负责将用户问题进行归类。
## 目标
对用户提问做分析,并给出相应的规划。
## 可选择的意图
- **方法/ method**:需要详细步骤、深度解析或专业指导的问题(如“给我详细讲解一下三角函数的解题思路”)。
- **创作/ write**:各类内容生成任务(如“帮我写一篇年度述职报告的样章”)。
- **总结/ summary**:获取信息、简短回答或概要总结的需求(如“为什么开车不易晕车但坐车容易晕车?”)。
- **无/ none**:无明确任务意图的日常闲聊(如“你好啊”“今天天气怎么样”)。
## 可选择的动作
- **联网搜索并输出**: {"type": "search_web_and_output", "keyword": "搜索关键词", "part": "该步骤输出内容的归属部分"}
- **仅输出**: {"type": "output", "part": "该步骤输出内容的归属部分"}
- **结束**: {"type": "end"}
## 示例
### 输入
给我搜索一下最新的新闻材料,然后提取出一个符合高中生价值观的作文主题,最后基于这个主题与新闻材料写一篇800字的作文。
### 输出
{
"thought": "嗯,我明白你的问题。考虑到这是一个多步骤的任务,我会先进行联网搜索并输出最新的新闻材料。接着,我会分析这些材料并提取出一个符合高中生价值观的作文主题。最后,我会基于这个主题和新闻材料,写一篇800字的作文。",
"plan": [
{"type": "search_web_and_output", "keyword": "最新新闻材料", "part": "新闻材料"},
{"type": "output", "part": "作文主题提取"},
{"type": "output", "part": "800字作文"},
{"type": "end"}
],
"intention": "write"
}
## 要求
1. 如果提问意图为”方法“,必须按照有顺序、有逻辑条理的方式来解答。
2. 如果提问意图为”总结“,则必须在正面回答问题的前提下,自行规划。
## 注意
1. **禁止**直接给出问题的答案,你只能分析问题。
2. 你生成的规划其实就是一个步骤列表,包括了在某个意图下生成的所有步骤列表。
3. 用户不会和你聊天,只会向你提问,所以你不能回答用户的问题,你只需要在经过分析和挖掘后,给出用户意图及规划。
2、输入问题
现在,我们输入一个新的问题,如下所示。
如何学习唱歌
3、输出结果
在把上面的问题输入给模型后,其输出结果如下所示。
{
"thought": "用户询问的是“如何学习唱歌”,这明显是在寻求学习唱歌的方法和步骤。首先,我需要考虑学习唱歌通常涉及哪些方面,比如基础乐理、发声技巧、呼吸方法、练习习惯等。由于唱歌技巧需要系统性的指导,可能需要分步骤来规划,确保逻辑顺序合理,从基础到进阶。同时,是否需要联网搜索可能取决于是否有最新的教学方法或资源推荐,但根据问题本身,主要是方法性的指导,现有知识可以覆盖基本步骤,因此可能不需要搜索,直接输出结构化的方法即可。",
"plan": [
{"type": "output", "part": "学习唱歌的基础准备(如了解音域、学习乐理基础)"},
{"type": "output", "part": "掌握正确的呼吸方法(腹式呼吸、气息控制练习)"},
{"type": "output", "part": "学习发声技巧(声带运用、共鸣训练)"},
{"type": "output", "part": "进行系统练习(音阶练习、歌曲演唱实践)"},
{"type": "output", "part": "培养乐感与情感表达(节奏训练、理解歌曲情感)"},
{"type": "output", "part": "养成良好的练习习惯与注意事项(避免过度用嗓、定期复盘)"},
{"type": "end"}
],
"intention": "method"
}
现在,我们结合前文所述的“识别意图、思考推理、规划生成”这一整个意图分析过程进行详细拆解。
(1) intention:识别意图结果
这一结果精准匹配了用户“如何学习唱歌”的核心诉求,即用户需要系统性、步骤化的专业指导,属于典型的“如何做”类问题,符合“方法类意图”的定义。在识别过程中,聚焦用户根本诉求,忽略未提及的具体步骤等过程性描述,直接体现了对用户最终目标意图的精准判断。
(2) thought:思考推理过程
思考推理过程首先明确用户核心诉求是“寻求学习唱歌的方法和步骤”,符合“方法类意图”中需要系统性指导的“如何做”问题定义。这一过程模拟了人类解决问题的思维链(Chain-of-Thought):从识别用户目标出发,再思考“学习唱歌”所需的基础乐理、发声技巧、呼吸方法等关键模块,完整复现了从目标出发拆解实现步骤的推理逻辑,为后续生成规划提供了思考依据。
(3) plan:可执行规划列表
可执行规划列表将思考推理转化为机器可解析的结构化步骤,明确动作类型、目标及输出内容,为后续执行提供引导。因无需联网搜索,动作类型(type)统一为“output”(仅输出),步骤目标(part)按“从基础到进阶”顺序设置,包括“基础准备”“呼吸方法”“发声技巧”“练习方法”“乐感培养”“习惯养成”等模块,符合学习认知规律,并以“type”: “end”作为结束标志避免流程循环。该规划如同“精准引导方案”,确保系统按步骤有序执行任务。
4、总结
现在,我们总结下优化后的意图分析,其核心流程可概括为“识别意图、思考推理、生成规划”的三阶闭环,实现了从“单一意图分类”到“任务全流程导航”的能力跃升。通过这一流程,意图分析系统不仅能“看懂”用户需求,更能“规划”如何满足需求,真正扮演了任务导航中的“大堂经理”角色,为复杂任务的高效执行奠定基础。