2023 年,在 ChatGPT 推出后,我们见证了生成式 AI 领域兴趣的爆发。从初创企业到大型企业,所有公司都在(并且仍然在)努力制定自己的生成式 AI 战略。
“我们如何将生成式 AI 整合到我们的产品中?我们应该遵循哪些参考架构?哪些模型最适合我们的用例?我们应该使用哪些技术栈?我们如何测试我们的 LLM 应用程序?”
这些都是公司在思考的问题。在如此不确定的时期,每个人都想知道其他人都在做什么。迄今为止,已经有一些尝试去阐明这一点,但凭借 LangChain 在生态系统中的独特地位,我们认为我们可以真正阐明团队是如何实际使用 LLM 进行构建的。
为此,我们转向了LangSmith中的匿名元数据。LangSmith 是我们的云平台,旨在简化从原型到生产的过程。它提供了跟踪、回归测试和评估等功能,以及更多功能。虽然仍处于私人测试阶段,但我们每天都在让用户离开候补名单,所以在此注册,如果您对企业访问或支持感兴趣,请联系我们。
通过此,我们可以回答有关人们正在构建什么、他们如何构建这些内容以及他们如何测试这些应用程序的问题。所有统计数据均取自 2023 年 7 月 2 日至 2023 年 12 月 11 日。
人们正在构建什么?
在这里,我们来看一下人们构建的一些常见事物。
尽管 LangSmith 与LangChain无缝集成,但它也易于在 LangChain 生态系统之外使用。我们看到 LangSmith 中约 15% 的使用来自不使用 LangChain 的用户。我们已经投入了大量工作来使所有上述组件的入门体验同样适用于您是否使用 LangChain。
检索已成为将您的数据与 LLM 结合的主要方式。LangChain 提供了与60 多个向量数据库(索引非结构化数据的最常见方式)的集成。LangChain 还提供了许多高级检索策略。我们看到 42% 的复杂查询涉及检索,这说明了检索的重要性以及 LangChain 使其变得多么容易。
最后,我们看到大约 17% 的复杂查询是代理的一部分。代理涉及让 LLM 决定采取哪些步骤,这使您的系统能够更好地处理复杂查询或边缘情况。但是,它们仍然不太可靠或性能不佳,这可能是我们没有看到更多使用的原因。
LCEL 使用情况
在过去的几个月里,LangChain 的一大新增功能是LangChain 表达式语言(简称 LCEL)。这是一种将组件组合在一起的简单方法,非常适合创建复杂、定制化的链。在整个生成式 AI 之旅中,这仍然处于非常早期的阶段,每个人都在努力弄清楚如何才能让 LLM 为他们工作。这涉及大量的实验和定制。LCEL 使这变得很容易——随着我们添加更多功能和改进文档,我们在过去几个月里看到它的使用迅速增加。
最常用的 LLM 提供商
所有这些中的新技术是LLM。那么人们使用哪些 LLM 提供商呢?
不出所料,我们看到OpenAI位居榜首,紧随其后的是AzureOpenAI。OpenAI 已成为 2023 年领先的 LLM 提供商,而 Azure(提供更多企业级保障)也很好地抓住了这一势头。
其他提供专有模型的托管服务包括 Anthropic(第三名)、Vertex AI(第四名)和 Amazon Bedrock(第八名)。
在开源模型方面,我们看到Hugging Face(第四名)、Fireworks AI(第六名)和Ollama(第七名)成为用户与这些模型交互的主要方式。
请注意,这些排名基于使用过特定提供商的用户数量。
最常用的开源模型提供商
最近,人们对开源模型给予了大量关注,越来越多的提供商竞相以更低廉的成本托管它们。那么开发人员究竟是如何访问这些开源模型的呢?
我们看到,人们主要是在本地运行它们,并且可以使用Hugging Face、LlamaCpp、Ollama和GPT4All等选项来实现。
在提供对开源模型的 API 访问的提供商中,Fireworks AI处于领先地位,其次是Replicate、Together和Anyscale。
请注意,这些排名基于使用过特定提供商的用户数量。
最常用的向量数据库
如前所述,检索是 LLM 应用程序的重要组成部分。向量数据库正在成为检索相关上下文的首要方式。在 LangChain 中,我们有60 多个向量数据库集成——人们使用哪些最多?
我们看到本地向量数据库使用最多,Chroma、FAISS、Qdrant和DocArray都排名前五。这些排名基于使用过特定向量数据库的用户数量,因此,如果您以这种方式计算,本地免费向量数据库使用最多是有道理的。
在托管产品中,Pinecone作为唯一进入前五的托管向量数据库处于领先地位。Weaviate紧随其后,表明向量原生数据库目前比添加向量功能的数据库使用更多。
在添加了向量功能的数据库中,我们看到Postgres (PGVector)、Supabase、Neo4j、Redis、Azure Search和Astra DB处于领先地位。
请注意,这些排名基于使用过特定提供商的用户数量。
最常用的嵌入
为了使用向量数据库,您需要为文本片段计算嵌入。那么开发人员是如何做到这一点的呢?
与 LLM 类似,OpenAI占据主导地位——但此后我们看到了更多样化。开源提供商的使用更多,Hugging Face位居第二,GPT4All和Ollama也跻身前八。在托管方面,我们看到Vertex AI实际上超过了AzureOpenAI,Cohere和Amazon Bedrock也紧随其后。
顶级高级检索策略
仅仅在嵌入之间进行余弦相似度计算在检索方面只能让你走这么远。我们看到很多人依赖于高级检索策略——其中许多我们在 LangChain 中实现了并记录在案。
即便如此,我们看到的仍然是最常见的检索策略不是内置策略,而是自定义策略。这说明了
- 在 LangChain 中实现自定义检索策略的便捷性
- 为了获得最佳性能,需要实现自定义逻辑
之后,我们看到更多熟悉的名字出现了
- Self Query——从用户的提问中提取元数据过滤器
- 混合搜索——主要通过特定于提供商的集成(如 Supabase 和 Pinecone)实现
- Contextual Compression——对基本检索结果进行后处理
- Multi Query——将单个查询转换为多个查询,然后检索所有查询的结果
- TimeWeighted VectorStore——更偏向于最近的文档
人们如何进行测试?
评估和测试已成为开发人员在构建 LLM 应用程序时遇到的最大痛点之一,而 LangSmith 已成为最佳方法之一。
我们看到大多数用户能够制定一些指标来评估他们的 LLM 应用程序——83% 的测试运行都与某种形式的反馈相关联。在有反馈的运行中,它们平均有 2.3 种不同类型的反馈,这表明开发人员难以找到一个完全依赖的单一指标,而是使用多种不同的指标进行评估。
在记录的所有反馈中,大部分反馈都使用LLM来评估输出。尽管一些人对这种方法表达了担忧和犹豫,但我们对此持乐观态度,并认为在实践中它已成为主要的测试方式。另一个值得注意的数据点是,近40%的评估器是自定义评估器。这与我们观察到的评估通常非常特定于正在使用的应用程序的事实相符,并且没有一个放之四海而皆准的评估器可以依赖。
人们在测试什么?
我们可以看到,大多数人仍然主要关注其应用程序的正确性(而不是毒性、提示泄露或其他护栏)。我们还可以从精确匹配作为评估技术的使用率较低看出,判断正确性通常非常复杂(你不能仅仅直接比较输出结果)!
结论
随着LLM应用程序开发的第一个完整年份即将结束,我们听到许多团队表示他们希望缩小原型到生产之间的差距。希望分享这些使用统计数据有助于阐明人们在构建什么、如何构建这些东西以及如何测试这些东西。
LangSmith正在成为团队将应用程序从原型转变为生产的主要方式——无论他们是否使用LangChain。如果您有兴趣获得企业访问权限或支持,请联系我们或在此注册。