本文译自[LangChain State of AI 2023]一文

LangChain2023年人工智能现状

2023年,随着ChatGPT的爆火,生成式AI的关注度也爆发式增长。所有公司从创业公司到头部企业都在(并且仍在)试图找出自己的生成式AI策略。

  • 我们如何将生成式AI整合到产品中?
  • 我们应该遵循什么参考架构?
  • 我们的用例最适合哪些模型?
  • 我们应该使用什么技术栈?
  • 我们如何测试大语言模型应用程序?

这些都是公司都在自问的问题。在这样的不确定性时期,每个人也都想知道其他人在做什么。目前已经有一些尝试,试图通过开放数据的统计来回答这些问题[state-of-ai-2023]。但凭借LangChain在生态系统中的独特地位,我们觉得我们可以真正洞察团队是如何实际上使用大语言模型构建的。

为此,我们转向[LangSmith]中的匿名元数据。LangSmith是我们的云平台,旨在轻松从原型过渡到生产。它提供了跟踪、回归测试和评估等功能。

通过这些,我们可以回答关于人们在构建什么、他们如何构建这些东西以及如何测试这些应用程序的问题。所有统计数据均取自2023-07-02至2023-12-11。

人们在构建什么?

人们在构建什么

这里我们看看人们正在构建的一些常见内容。

尽管LangSmith与[LangChain] 完美集成,但它也很容易在LangChain生态系统之外使用。我们看到LangSmith中的使用量中约15%来自未使用LangChain的用户。我们为使[入门过程]适用于上述所有组件的[无论您是否使用LangChain都能保证工作正常]做了大量工作。

[检索] 已成为将自己的数据与大语言模型结合的主要方式。LangChain与[60多个向量存储]集成(索引非结构化数据的最常见方式)。LangChain还提供许多[高级检索策略]。我们看到42%的复杂查询涉及检索——这既体现了检索的重要性,也体现了LangChain简化检索所带来的易用性。

最后,我们看到约17%的复杂查询属于代理的一部分。[代理]涉及让大语言模型决定采取哪些步骤,这使您的系统能够更好地处理复杂查询或边缘案例。然而,由于可靠性或执行性仍然不高,这可能就是我们没有看到更多使用的原因。

LCEL的使用情况

LCEL

近几个月LangChain新增的重大功能之一是[LangChain表达式语言]。这是一种轻松组合组件的简单方法,非常适合创建复杂的自定义链。对于这个刚刚起步的生成式AI时代,每个人都在尝试找出大语言模型如何精确满足他们的需求。这需要大量的实验和定制。LCEL使这变得很容易——我们看到随着功能的增加和文档的改进,过去几个月中LCEL的使用量快速增长。

最常用的大语言模型提供商

最常用的大语言模型提供商

这其中的新技术是[大语言模型]。那么用户使用的是哪些大语言模型提供商呢?

在首位毫不奇怪的是[OpenAI],紧随其后的是[AzureOpenAI]。OpenAI已成为2023年领先的大语言模型提供商,Azure(提供更多企业保证)也抓住了这一势头。

其他提供专有模型的托管服务包括Anthropic(第3名)、Vertex AI(第4名)和Amazon Bedrock(第8名)。

在开源模型方面,我们看到Hugging FaceFireworks AIOllama成为用户与这些模型交互的主要方式。

需要注意的是,这些排名基于使用给定提供商的用户数量。

最常用的开源大语言模型提供商

最常用的开源大语言模型提供商

最近一直在讨论开源模型,越来越多的提供商在以越来越低的成本提供这些模型。那么开发人员到底是如何访问这些开源模型的呢?

我们看到人们主要是在本地运行它们,常用的本地运行选项包括[Hugging Face]、[LlamaCpp]、[Ollama]和[GPT4All]。

在提供开源模型API访问的提供商中,[Fireworks AI]居首,其次是[Replicate]、[Together]和 [Anyscale]。

需要注意的是,这些排名基于使用给定提供商的用户数量。

最常用的向量存储

最常用的向量存储

正如前面提到的,检索是大语言模型应用程序的重要组成部分。向量存储正在成为检索相关上下文的主要方式。在LangChain中,我们与[60多个向量存储] 集成——最常用的有哪些呢?

我们看到本地向量存储是使用量最大的,其中[Chroma]、[FAISS]、[Qdrant]和[DocArray]均进入前5名。如果根据用户数量来计算,那么使用量最大的自然就是本地的免费向量存储。

在托管的提供商中,[Pinecone] 是唯一进入前5名的托管向量存储。[Weaviate]紧随其后,这表明原生向量数据库目前使用得比后添加向量功能的数据库更多。

在那些添加了向量功能的数据库中,我们看到领先的是[Postgres (PGVector)]、[Supabase]、[Neo4j]、[Redis]、[Azure Search]和[Astra DB]。

需要注意的是,这些排名基于使用给定提供商的用户数量。

最常用的嵌入

最常用的嵌入

为了使用向量存储,您需要为文本片段计算嵌入。那么开发人员是如何做到这一点的呢?

与大语言模型类似,[OpenAI]占据主导地位——但之后我们看到了更多样化。开源提供商使用得更多一些,其中[Hugging Face]位居第二,[GPT4All]和[Ollama]也进入前8名。在托管提供商方面,我们看到[Vertex AI]实际上超过了 [AzureOpenAI],[Cohere]和[Amazon Bedrock]也不遑多让。

最常用的高级检索策略

最常用的高级检索策略

仅仅依赖嵌入的余弦相似性的检索只能达到很有限的效果。我们看到许多人依赖于[高级检索策略]——LangChain中实现并记录了其中的许多。

即便如此,我们看到的最常用检索策略不是内置的,而是一个定制的。这表明了在LangChain中实现自定义检索策略的[简易性],也说明了为实现最佳性能而需要实现自定义逻辑。

其次,我们看到了更熟悉的名字出现:

  • [Self Query] 从用户的问题中提取元数据过滤器
  • Hybrid Search 主要通过 Supabase 和 Pinecone 等提供商的集成实现
  • [Contextual Compression] 基本检索结果的后处理
  • [Multi Query] 将单个查询转换为多个查询,检索所有查询的结果
  • [TimeWeighted VectorStore] 给予更多优先权给最近的文档

人们如何测试?

人们如何测试

[评估和测试]已成为开发人员在构建大语言模型应用程序时遇到的最大痛点之一,而LangSmith已成为[最佳测试方式]之一。

我们看到大多数用户都能制定一些指标来评估他们的大语言模型应用程序——83%的测试运行都具有某种形式的反馈。在具有反馈的运行中,平均有2.3种不同类型的反馈,这表明开发人员难以完全依赖单一指标,而是使用多种不同指标来评估。

在记录的反馈中,大多数[使用大语言模型]来评估输出。尽管一些人对此表示担忧和犹豫,但我们对这种方法持乐观态度,并且看到在实践中它已成为主流的测试方式。另一个值得注意的数据是近40%的评估器是[自定义评估器]。这与我们观察到的事实一致,即评估通常非常特定于正在处理的应用程序,并且没有一种通用的评估器可以依赖。

人们在测试什么?

人们在测试什么

我们可以看到大多数人仍主要关注他们的应用程序的正确性。我们还可以从精确匹配作为评估技术的低使用率中看出,判断正确性通常非常复杂(您无法简单地按原样比较输出)!

结论

随着第一年的大语言模型应用程序开发走向尾声,我们听到许多团队希望缩小从原型到生产之间的差距。希望通过分享这些使用统计数据可以加深人们对构建什么如何构建这些东西以及如何测试这些东西的了解。