首页 > 人工智能 > 机器学习 > AI 导购在 vivo 官网的落地实践
作者:vivo 互联网大前端团队-Feng Wei、Li Quanlong
本文介绍AI导购技术在 vivo 官网 APP 的落地实践,通过定义解决问题的边界能力、搭建多层架构方案、方案落地这三大块内容逐步递进地展开 AI 导购在为用户服务的应用过程。
1分钟看图掌握核心要点👇
图 1 VS 图 2,您更倾向于哪张图来辅助理解全文呢?欢迎在评论区留言。
现如今,AI技术突飞猛进,AI大语言模型能够更好地理解用户的自然语言,并且识别其意图,来解答用户的问题。在相对垂直的专业领域,AI大语言模型都有不错的表现。在一些购物APP上,如京东京言,淘宝问问等,用户可以输入自然语言和其交互,来帮助用户对比商品、推荐商品等。基于此,我们探索了AI导购在vivo官网购物咨询等场景的落地应用。
一般而言,用户在vivo官网购买商品时,往往是有这几种主要路径:浏览首页或者活动的商品资源位;选购页按品牌系列细分浏览;搜索页面直接搜索相关商品;这几种方式,缺少了和用户互动的形式来为其推荐商品,AI导购可以和用户进行多轮对话,为用户推荐商品或者解答用户的问题。
AI导购广义上来说,是一个综合的智能体,用户可以与其进行多轮对话;狭义上来说,是通过信息处理工程和大语言模型协同工作来理解用户意图,在约束的条件下回复用户问题。因此,在我们这个场景下,设计的AI导购主要有两大能力:
(1)围绕用户的描述,为用户推荐相匹配的手机;
(2)解答用户关于手机的相关问题。
以为用户推荐手机场景为例,抽象AI导购工作的简易流程,如下图所示:
首先用户输入“喜欢拍照,爱记录分享生活,给我推荐一个最新的旗舰手机”,然后AI导购收到到用户的输入信息后,开始如下几个步骤的处理:
在正式介绍AI导购应用落地的整体方案前,先介绍下技术选型。好的技术方案,是能成功应用落地实践的一半。在介绍大模型方案之前,我们看下与传统数据库检索答案方案的对比:
使用的技术栈:LLMFine-tuning + Prompt-
Engineering。 LLM Fine-tuning(大语言模型微调)是指在预训练的大语言模型基础上,使用特定领域的数据进行进一步训练,使模型适应特定任务或领域的过程。 Prompt Engineering(提示词工程)是通过精心设计和优化输入提示(Prompt)来引导模型生成更准确、更符合期望的输出。
可以参考的实现方案:StanfordAlpaca、LoRA微调。 Stanford Alpaca 是斯坦福大学基于 LLaMA 模型开发的指令微调模型。LoRA (Low-Rank Adaptation)是一种高效的微调技术,通过低秩矩阵分解来减少微调参数量。
该方案有如下的优劣势:
优势:
劣势:
技术路线:从0到1构建专业语料训练的问答模型。
技术栈:预训练大语言模型 + 专业手机语料。
劣势:
技术路线:信息接口工程 + Prompt工程 + 九问平台(知识库 + Function-Call + RAG检索) + 大语言模型。
信息接口工程:调用商品信息接口获取商品相关参数、调用智能客服的问答系统获取专业知识内容、调用相关社区帖子信息等。
Prompt工程:围绕解决的场景设计和优化提示词,引导大语言模型输出的准确性,同时也可约束大语言模型的输出范围。
九问平台:快速搭建并使用智能体的平台,其提供了创建知识库、函数回调、知识库RAG检索、Prompt优化、意图改写等实用能力。
优势:
选择结果:Agent工作流方案
选择理由:
搭建AI导购这个方案,一定要考虑好该方案的能力边界是什么,即要清晰知道AI导购在vivo官网场景的定位。因此,在构建之初就明确了,要的不是“大而全”,而是“小而精”。
具体而言,为AI导购设计了两个核心能力:
那么,围绕这两个核心能力,进一步拆解,能够获取如下详细的约束规则:
确定能力边界后,就可以搭建解决方案了。通过分层的设计,每层更能清晰自己的职责,只要做好层与层直接的接口对接即可,无需关注其他层的实现细节。因此AI导购的分层结构笼统来说,是由四层搭建,如下图所示:
经过上面的分层结构,大致了解了AI选机的整体架构,现在具体介绍下AI导购的交互流程,如下图所示:
AI导购两个核心的能力分别是:为用户推荐手机,或者解答用户关于手机的问题。这两个能力分别对应两个不同的智能体去处理。那么,如何判断用户的问题是属于哪一个呢?有两种方式:
用户的自然语言输入,从专业术语上讲一般短文本,而不是长文本。小模型对于处理短文本做分类而言,是可以胜任的。并且小模型具有训练成本低和性能优势,减少了对大模型的依赖,也提高了响应速度。因此,综合考虑,意图识别由小模型承载,并且针对我们的场景进行单独训练。
整体的模型训练流程如下:
以下详细介绍数据合成的过程,如下:
① 数据合成法则:根据业务场景和模型需求,定义数据合成的规则和逻辑。
② 实例:
输入:用户咨询“iQOO12对比X100怎么样?
输出:_label_compare iQOO12对比X100怎么样
输入:x100的长焦效果
输出:_label_feature x100的长焦效果借助大模型工作流,为采集到的数据在清洗后,进行打标签处理,打标机器人的WorkFlow如下图所示:
模型选择上,我们使用的是开源文本分类模型FastText。FastText模型 特点如下:
训练的代码如下:
import fasttext
# 超参数调优结果
model = fasttext.train_supervised(
input=temp_file,
lr=0.5,
dim=200,
ws=5,
epoch=50,
wordNgrams=3,
minn=3,
maxn=6,
loss="softmax",
)训练代码中的超参数解释:
模型最终通过容器化部署,部署在CPU机器上,整体的推理速度和运行效果良好,每次运行推理时间再10ms左右,用户层面无感知。
用户的问题,经过意图识别小模型识别后,输出两个分类的概率值:手机参数解读的概率值;手机商品推荐的概率值,取较大概率值即为用户的意图。明确了用户的意图后,后续将用户的问题送入到对应的智能体处理即可。因此,接下来详细介绍手机参数解读智能体和手机商品推荐智能体的设计。
手机参数解读智能体,简而言之,就是处理用户关于某个手机的一些参数的解读理解。例如,用户咨询“x300手机的电池容量是多少?”。拿到用户的问题后,并经过意图识别是手机参数解读智能体时,我们需要注意这几个关键点:
把上述这几个点搞清晰后,就可以通过信息工程获取针对性的手机信息。进而将信息集合并、Prompt提示词和知识库检索的内容组成信息集合送入大语言模型。
1. 获取信息语料
在服务后台,按品牌和系列维护了一个机型列表,并对每个机型按照划分的模块补充了详细的语料库,例如x300的相关信息,按照这些纬度进行划分:功能特色、手机标配、上市时间、进网细腻系、主要参数、处理器、内存与容量、电池信息、屏幕、拍摄等。所以,通过用户的问题匹配到具体的机型后,再识别出具体是关于该手机的哪些模块的问题,就可以将该手机的这些模块信息获取拼接为回答该问题的原始手机信息语料。
2.Prompt提示词设计
提示词的设计原则:
你是一位热情友好的手机导购助手,拥有丰富的手机知识,擅长帮助顾客选择最适合他们的手机。请按照以下指南与用户互动:
1. 仅回答系统提示词中补充的机型,主要为vivo和iqoo手机,其他品牌手机不予回答。
2. 控制回答的字数,不要超过200字。且如果回答不上来,则提示用户退出ai手机导购,转人工咨询。
3. 用1-2句话简洁有力地回应用户的核心问题,突出相关手机的主要特点和优势。
# 做了部分隐藏,可结合自己的业务场景具体设计
...
补充知识:
1、iQOO系列的手机有和宝马联名
2、手机信息中的【官方回答】里的内容为官方答案,可以结合手机信息一起回答
# 做了部分隐藏,可结合自己的业务场景具体设计
...
请记住,你的目标是帮助用户发现手机的价值,找到最适合他们的选择。在保持专业和诚实的同时,要让用户感受到手机的魅力和实用性。
# 做了部分隐藏,可结合自己的业务场景具体设计
...
手机信息:{{infos}}可以看到Prompt提示词的设计还是比较复杂的,并且需要注意的是:提示词中的“手机信息:{{infos}}”,其实就是通过获取手机信息语料来填充的内容。
3.手机参数解读Bot设计
任务一:用户咨询单个手机的相关参数问题时,回答该手机的参数内容信息。
任务二:用户将两个手机进行对比时,要围绕用户关注的纬度进行对比,并给出中肯的对比结论。
手机参数解读Bot的设计如下:
由上图可以清晰了解:手机参数解读Bot的输入是用户的问题query和匹配的手机信息info,然后内部是Prompt调优工程、结构化信息(其实就是知识库的检索内容)和智能客服的官方问答系统,最后是送入大语言模型完成处理。
手机商品推荐智能体,是围绕着用户的描述,为其推荐比较匹配的手机。例如,用户咨询“喜欢拍照,分享朋友圈,大概4000元左右新上市的旗舰手机”。
从用户的描述来看,能提取出如下关键信息:
在用户的描述中,提取出可量化的点,并在推荐的时候,尽可能地多匹配这些点,这样推荐的手机才能更加匹配用户的需求。
1.Prompt提示词设计
手机推荐的Prompt和手机参数解读关键不同的地方在于:如何做好推荐,让推荐的手机更好地匹配用户的问题。为了解决这个问题,最好的方式是交个大语言模型去理解。试想下,人为地去为推荐的每个手机去按照纬度打标签复杂度是非常高的,例如:需要设计一套标签规则,还需要将用户的问题分解到不同的标签体系中,并做计算,按照得分大小从高到低排序。这里的每个环节都比较复杂,并且即便设计好如此规则,用户的问题是开放性的。
因此,换个思路:将所有要推荐的手机商品信息按照一定的规则补充到手机推荐列表信息中,然后将其与Prompt组合在一起共同送给大模型,让大模型理解用户的咨询问题,并从手机推荐列表中,寻找最适合的手机进行推荐,并给出推荐理由。交给大语言模型去做推荐的这种思路是开放性的,能够兼容和处理用户的问题,因此我们只要更好地维护手机推荐列表信息即可,维护性及可扩展性都非常简单。
提示词的设计如下:
# 角色
你是一名专业的vivo、iQOO品牌的资深手机导购员。
# 技能
1. 理解用户的购机需求,分析查询中的具体要求(如颜色偏好、价格范围等)。
2. 根据补充知识的手机信息,围绕着用户的问题,来阐述该手机的优点。
3. 只回答和手机相关的内容,无关手机的内容请重申你是一名专业的vivo、iqoo品牌的资深手机导购员,请描述你的购机需求,我将为你推荐合适的手机。
4. 无论用户要求推荐多款手机都只推荐一款手机,该款手机必须根据补充知识的内容进行回答。
5. 如果用户要求你推荐非vivo、iQOO品牌的手机都不用理会,请严格给用户推荐vivo、iqoo品牌手机,并根据补充知识的手机进行推荐。
# 做了部分隐藏,可结合自己的业务场景具体设计
...
11. 回答问题时,请先参考补充知识1、再参考补充知识2、最后才参考补充知识3
# 注意
1. 要有温度和关怀,使用适当语句助词增强对话真实感。
2. 注意格式,包括缩进和空行,以提升阅读体验。
3. 请严格从补充知识中回答用户问题。
4. markdown格式输出应使用加粗形式,避免使用标题、斜体输出;对推荐的手机名称要加粗突出强调;对理由阐述时子标题应加粗;最后总结时,“总结”两字应该加粗输出。
5. 重点记住只回答和vivo、iQOO品牌有关的手机信息,其他无关手机内容,请重申你的角色。
6. 输出内容不要添加“回答”、“回复”之类词汇,直接输出核心内容。
# 做了部分隐藏,可结合自己的业务场景具体设计
...
参考样式:
为您推荐xxx手机:阐述优点、推荐理由总结:简短进行总结注意:请使用补充知识来回答
补充知识1:{{recommend_phone_list}}
补充知识2:#上下文#
补充知识3:用户的问题是:#用户输入#
当上述内容回答不出用户的问题时,可以根据智能客服官方回答作为参考
智能客服官方回答为:{{infos}}
Y500 Pro 上市时间:2025年11月10日
Y500 Pro手机:
定位:国民小旗舰、防水、抗摔、5G手机、
2亿HP5旗舰级主摄、持久流畅OriginOS6、
7000mAh半固态蓝海电池、1.5K旗舰级护眼屏
1、规格:
(1)内存及存储大小:8GB+128GB、8GB+256GB、
12GB+256GB、12GB+512GB
(2)可选颜色:钛黑、柔粉、浅绿、祥云金
2、上市价格区间:1799元到2599元
3、核心参数:
(1)性能:天玑7400
(2)屏幕:6.67英寸直屏
(3)电池:7000mAh半固态蓝海电池、90W有线充
(4)影像-后摄:主摄:2亿HP5旗舰级主摄
(支持OIS+EIS防抖),虚化:200万像素虚化
(5)影像-前摄:3200万像素
(6)特色功能:1.5K旗舰级护眼屏、IP68+IP69
满级防水、持久流畅OriginOS6、全功能NFC、支持红外
(7)厚度:7.81mm、重量:198.6g提示词中,补充知识1:{{recommend_phone_list}}是手机推荐列表的信息,按照一定的模块格式进行信息填充;{{infos}}是智能客服问答系统的答案,用户兜底参考回答。
2.手机商品推荐Bot设计
任务一:如何根据用户的咨询内容,为其匹配合适的手机,且手机需是当前vivo官网在售的。
任务二:识别到非手机推荐相关,则优先根据智能客服回答,再则委婉提示身份定位,拒绝其回答内容。
垂直的专业知识库建设是很有必要的,作为非常重要的内容参考提供给大语言模型。而匹配用户的问题,选取最佳的知识片段。
在AI导购方案中,搭建了2个不同的知识库:商品推荐知识库、商品评测知识库。这两个知识库分别和上面的智能体对应,推荐的智能体使用推荐知识库;商品参数解读的智能体使用商品评测知识库。
知识库的内容,具体包含下面几个维度:
根据用户的问题,从知识库中提取相关的信息。
需要注意:每个文件中的内容尽量聚焦,即相关的内容聚在一个segment片段,该片段作为被RAG检索的向量单位来参与相关性分值计算。
RAG是“ Retrieval-AugmentedGeneration”的缩写,这是一种自然语言处理(NLP)技术,用于增强生成式模型的性能,尤其是在问答、文本摘要、对话系统等任务中。RAG结合了检索(Retrieval)和生成(Generation)两个阶段,以提高模型对信息的处理和回应的质量。
通过匹配用户的问题,然后在知识库中,给每个片段计算相似性,并进行排序,如下图
通过RAG工具,根据大语言模型的上下文内容约束,可以选择前几个片段作为内容参考共同送入大语言模型。
呈现给用户的是结构化的输出内容,包含三部分内容:首先是商品卡片信息,有商品的价格、商品图、商品名称以及用户评价等内容;其次是大模型的输出内容;最后是相关联的社区帖子信息集合。下面具体来看这三块输出信息。
手机商品卡片由商品图片、商品名称、配置版本、价格以及用户评论这些信息组成。
那么,手机商品卡片的信息是如何来的呢?当然不是大语言模型生成的,而是请求手机商品接口获取的,针对手机参数解读和推荐手机这两个场景,分别单独处理:
(1)手机参数解读场景:因为在进入该分类的时候,就已经知道用户咨询的是哪个手机,因此可以获取到手机名称后,根据后台维护的映射表获取对应的商品spuId,这样就可以直接调用商品信息接口来查询获取该手机商品的信息,并把这些信息组成成json体插入到大模型返回的event中即可。
(2)推荐手机场景:在此场景下,获取的商品信息稍微滞后一点,是需要等待大语言模型输出要推荐的手机名称后,才能进一步做请求商品接口动作。这里有一个关键的设计点是:对推荐手机场景,要求大语言模型第一句话就直接了当地给出要推荐的手机名称,这样拿到此名称后再做接口请求,然后将请求接口后的json数据封装下插入到大模型的流式返回中即可。
大语言模型输出内容,是一个打印机式的流式输出,这里需要注意下面几点情况:
围绕用户的问题,输出比较贴合的相关社区帖子,可以更好地帮助用户拓展该问题的信息面,在浏览大语言模型的输出内容情况下,也可以进一步查看相关的帖子来进一步更细地了解其他用户发的相关内容。
那么,相关帖子的信息基本是和商品卡片类似,根据用户的问题和大语言模型的输出内容来搜索相关帖子内容,并选取前五个匹配度较高的帖子进行展示。
大语言模型总结的效果不可预测,模型幻觉的问题也同样不可避免,所以在直接的面向用户场景下,需要对大语言模型的输入及输出进行严格的审核,尽力确保回答的准确性和质量。因此,在真正地落地上线前,还需要通过安全测试。
安全测试数据准备: 1.6W条测试安全测试语录,其中会涉及:伦理道德、低俗文化、不良引导等多个方面测试集。例如,安全测试用例的结构如下:
针对不适合体验问题,需要阻断大语言模型的回答,立即提示用户并退出ai手机导购,转人工咨询。 在安全问题处理上,主要有三个策略:
较快的首字符响应速度,会更好地赢得用户的青睐,反之,则会消耗用户的耐心。
响应速度:整体的服务首字节内容返回控制在2.5s以内,体验效果良好。
AI导购版本全量后效果不错,整体业务数据超出预期,通过AB实验和大盘效果观测,对业务GMV和解决率有正向贡献。
第一次在vivo官网引入AI导购这种新的业务形态,从技术的可行性验证、到方案架构的打磨、再到最后的上线落地,对我们都是一个极大的技术能力提升。与此同时,在业务侧带来的业务数据正向提升也更加验证了AI导购应用场景的价值,对技术的探索和业务数据的提升是一个双赢的局面。
未来,我们会进一步拓展AI导购的能力边界,扩充解决范围,如配件相关问题、手机和配件的关联、手机检测能力、售后服务的相关能力等。在交互形态上,也可以更丰富,如引入语言朗读、引入数字人交互等。更好,更准确,更有趣地满足用户多样化的需求。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912579/viewspace-3172447/ ,如需转载,请注明出处,否则将追究法律责任。