跳转到主要内容

编者按:非常感谢Willem Pienaar(Feast)、Mike Del Balso(Tecton)和Simba Khadder(FeatureForm)对本文的评论和帮助。

LLM代表了人工智能的一种新范式。有多少对传统机器学习有用的工具和服务在这里仍然相关,这是一个悬而未决的大问题。一方面,对于这种新的范式,有非常真实的新用例和需求。另一方面,现有的工具和服务具有多年的经验、开发和功能强化。这些工具在这个新的范式中仍然有用吗?

特性存储概述

一个特别有趣的案例研究是功能商店。在传统的机器学习中,模型的输入不是原始文本或图像,而是与手头的数据点相关的一系列工程“特征”。特征库是一个特征库,是一个旨在将ML特征集中并提供给模型的系统。通常有两个好处:

一种跟踪在特定时间点存在哪些特征以用于模型训练的方法

  • 进行推理时使用的实时特征管道
  • 这些可能如何适用于LLM应用程序?

第一点似乎没有那么重要。大多数人使用OpenAI、Anthropic等预先训练的LLM,而不是从头开始训练自己的模型。

另一方面,我们认为第二个好处(在进行推理时使用的实时特征管道)仍然非常相关。我们相信,可以使用功能的实时管道(由功能库启用)来实现LLM应用程序的实时个性化。尽管目前我们还没有看到很多这样的情况,但我们相信,随着应用程序越来越先进,这将变得越来越受欢迎。

LLM就像一个人一样,是一个“推理引擎”。如果您也可以随时访问有关用户或业务的新数据,那么有一整套任务将更容易推理。例如,如果你让一个人估计从a到b需要多长时间,如果他们也知道a和b之间有哪些路段,以及这些路段现在的交通量,他们可能会做出更好的决定。

这种添加的上下文或数据丰富在传统的ML中已经被广泛使用了很长一段时间。有些型号具有1000个功能。尽管LLM可以在只需用户提示的情况下解决一些ML任务,但一大组任务只能在有大量上下文数据的情况下以具有竞争力的准确性完成。

提示概述

语言模型应用程序的定义很大程度上取决于它们的提示是如何构建的。因此,在试图思考功能库如何影响语言模型应用程序之前,我们应该尝试了解构建提示的不同方式,然后思考功能库是如何影响提示构建的。以下可能是三种最常见的即时构造类型,从最不复杂到最复杂依次排列。

#1:硬编码提示字符串

这是指应用程序对传递到语言模型中的整个提示进行硬编码的情况。没有对提示进行自定义,因此输出中的所有变化都来自语言模型。这是一个非常简单的提示策略,老实说,它可能非常简单,很少使用。

#2:包含用户输入

下一步是将用户输入合并到提示字符串中。这意味着要有一个提示模板,并使用运行时输入的用户输入来填充变量。像这样的应用程序的一个例子可以是生成诗歌的应用程序。这个应用程序可以要求用户输入“主题”,然后在将其传递给语言模型之前,格式化一个类似“给我写一首关于{主题}的诗”的提示。这可以用多个变量来完成,但重要的是它在运行时接受用户输入,并用这些变量格式化字符串。

#3:合并基本实时系统数据

在提示中包含基本的实时系统数据通常会很有帮助。最常见的例子是包含当前的日期和时间。这不是你想要硬编码的东西(因为它不断变化)。这有助于让语言了解系统/世界的当前状态。

#4:合并基于用户输入获取的外部数据

另一个进步是使用用户提供的输入来获取更多信息并将其输入到提示中。所有的问答应用程序就是一个很好的例子。这些应用程序通常使用提示模板,如:

Answer the following question: {question}
Only use the following information to answer:
{context}
Answer:

此提示需要两个变量:“问题”和“上下文”。问题通常由用户在运行时提供,上下文是指(通常通过检索系统)获取的与用户输入相关的数据。

这已经允许了某种类型的“个性化”——根据使用的检索器,该上下文可以用于“个性化”应用程序,以便它可以对特定类型的数据做出响应。

特性存储<>提示

这就是我们今天看到的四种主要的即时建设策略。我们认为功能商店可以通过允许包含实时、复杂且通常基于用户的信息来增强即时构建。

这是结合了现有快速施工方法的关键思想。当我们插入诸如当前日期和时间之类的内容时,我们将世界当前状态的知识注入到提示中——但这是非常简单和一般的知识。当我们插入基于用户输入获取的外部数据时,我们会整合更多个性化的数据,但这在很大程度上完全基于用户输入。

要想看到这一点,我们可以前往盛宴GitHub存储库——一个更受欢迎的开源功能商店。让我们看看自述文件上的例子。

在这个例子中,我们获取的是实时的、特定于用户的信息。在传统的ML模型中,这些信息会作为特征值输入到模型中,但现在我们可以将其输入到提示中!

为了了解如何做到这一点,我们设置了一个示例笔记本,展示了如何将功能存储连接到提示模板。将它放在提示模板中,可以很好地封装该逻辑并将其传递到链中。当我们调用该链时,可以通过盛宴获取实时信息,并用于构建提示,然后将其传递到语言模型中。

请参阅此处的示例笔记本。我们这样做是为了各种功能商店:盛宴、特克顿、FeatureForm。下面是一个使用Tecton执行此操作的代码示例,正如您所看到的,它真的很简单!

这显然是一个简单的例子,但我们相信它突出了这种方法的力量,并暗示了这种方法在未来更为普遍。许多语言模型应用程序仍在努力起步,但随着时间的推移,我们相信实时的用户级信息将用于构建提示,并提供卓越的个性化最终用户体验。潜在应用程序的示例包括具有实时上下文的聊天机器人、具有个性化上下文的营销内容以及给定最近用户会话历史的推荐。随着我们走向这个世界,我们相信现有的功能商店已经做好了帮助实现这一目标的准备。