亚马逊的AI购物助手:Rufus,你的线上购物“知心朋友”
你是否曾经在网购时遇到过这样的困惑:
- “冬天打高尔夫球需要哪些装备?”
- “越野跑鞋和普通跑鞋有什么区别?”
- “五岁孩子最喜欢的恐龙玩具有哪些?”
在实体店,你可以向热心的店员寻求帮助,但在线上购物,如何获得类似的解答呢?
亚马逊的答案是Rufus,一个由生成式AI驱动的购物助手。Rufus帮助亚马逊用户在亚马逊应用程序内获得更明智的购物决策,它可以回答各种各样的问题,提供产品细节、比较选项以及推荐产品。
我领导着开发Rufus背后的强大语言模型(LLM)的科学家和工程师团队。为了打造一个真正有用的对话式购物助手,我们在生成式AI的多个方面采用了创新技术。我们构建了一个专门针对购物的定制LLM,并结合了多种新颖的证据来源进行检索增强生成;利用强化学习来改进响应;在高性能计算方面取得进展,以提高推理效率并降低延迟;并实施了一种新的流式架构,以便更快地为购物者提供答案。
Rufus如何获取答案
大多数LLM首先在广泛的数据集上进行训练,以告知模型的整体知识和能力,然后针对特定领域进行定制。这对于Rufus来说并不适用,因为我们的目标是从一开始就用购物数据对其进行训练——首先是整个亚马逊目录,以及客户评论和来自社区问答帖子的信息。因此,我们的科学家构建了一个定制的LLM,它是在这些数据源以及网络上的公开信息的基础上进行训练的。
但为了准备好回答可能提出的各种问题,Rufus必须能够超越其初始训练数据,并引入新的信息。例如,要回答“这个锅可以放洗碗机吗?”这个问题,LLM首先解析问题,然后确定哪些检索来源可以帮助它生成答案。
我们的LLM使用检索增强生成(RAG)从已知可靠的来源(如产品目录、客户评论和社区问答帖子)中提取信息;它还可以调用相关的亚马逊商店API。我们的RAG系统非常复杂,既因为使用了各种数据源,也因为每个数据源的相关性因问题而异。
每个LLM,以及生成式AI的每种应用,都是一个不断完善的过程。为了让Rufus随着时间的推移而变得更好,它需要学习哪些响应是有帮助的,哪些可以改进。客户是提供这些信息的最佳来源。亚马逊鼓励客户向Rufus提供反馈,让模型知道他们是否喜欢或不喜欢答案,这些响应将用于强化学习过程。随着时间的推移,Rufus从客户反馈中学习并改进其响应。
为Rufus量身打造的特殊芯片和处理技术
Rufus需要能够同时与数百万客户进行互动,而不会出现任何明显的延迟。这尤其具有挑战性,因为生成式AI应用程序非常计算密集,尤其是在亚马逊的规模下。
为了最大限度地减少生成响应的延迟,同时最大限度地提高系统可以处理的响应数量,我们转向了亚马逊的专用AI芯片Trainium和Inferentia,它们与核心亚马逊网络服务(AWS)集成在一起。我们与AWS合作进行了优化,以提高模型推理效率,这些优化随后提供给所有AWS客户。
但是,标准的用户请求批处理方法会导致延迟和吞吐量问题,因为很难预测LLM在编写每个响应时将生成多少个标记(在本例中为文本单位)。我们的科学家与AWS合作,使Rufus能够使用连续批处理,这是一种新颖的LLM技术,使模型能够在批处理中的第一个请求完成时立即开始服务新请求,而不是等待批处理中的所有请求完成。这种技术提高了AI芯片的计算效率,并使购物者能够快速获得答案。
我们希望Rufus能够为任何给定的问题提供最相关和最有帮助的答案。有时这意味着长篇文本答案,但有时是短篇文本,或者是一个可点击的链接以浏览商店。我们必须确保呈现的信息遵循逻辑流程。如果我们没有正确地对内容进行分组和格式化,最终可能会得到一个令人困惑的响应,这对客户来说没有太大帮助。
这就是为什么Rufus使用高级流式架构来提供响应。客户无需等待长答案完全生成——相反,他们会在答案的其余部分生成时获得答案的第一部分。Rufus通过向内部系统发出查询来填充流式响应中的正确数据(称为水化)。除了生成响应的内容外,它还生成格式化指令,指定各种答案元素应如何显示。
尽管亚马逊已经使用AI超过25年,以改善客户体验,但生成式AI代表着一种新的、变革性的东西。我们为Rufus感到自豪,以及它为我们的客户提供的全新功能。