“我们对 ClickHouse 的体验非常积极。它使我们能够将 LangSmith 扩展到生产工作负载,并提供一项用户可以记录所有数据的服务。如果没有 ClickHouse,我们不可能完成这项工作。”
Ankush Gola,LangChain 联合创始人
简介
我们越来越看到公司使用 ClickHouse 构建可观测性解决方案,这得益于它能够处理高插入工作负载以及此用例中常见的低延迟分析查询的需求。看到创新的特定领域解决方案有可能开启新的范例并提高开发者生产力,这更加令人兴奋。LangChain 利用 LangSmith 开发了这样一个解决方案——一个统一的开发者平台,用于 LLM 应用程序的可观测性和评估。LangSmith 包含 AI 产品开发生命周期每个步骤的功能,并使用 Clickhouse 为关键用户体验提供支持。
随着 LangSmith 最近宣布已正式发布,我们有幸采访了 LangChain 联合创始人 Ankush Gola,他向我们解释了 LangSmith 对 LLM 应用程序开发者的价值,以及他们为什么选择 ClickHouse 作为数据库来支持用户体验,并选择 ClickHouse Cloud 作为其托管产品背后的服务。
LangSmith 解决了哪些问题?
LangSmith 专注于用户在开发 LLM 应用程序时遇到的两个主要挑战:可观测性和评估。
可观测性
当使用 LLM 应用程序时,总是有许多移动部件,包括链式 API 调用和决策流程。这使得理解底层发生了什么变得具有挑战性,用户需要调试无限代理循环或令牌过度使用的情况。LangSmith 意识到这里的明显需求,最初是一个可观测性工具,旨在通过在 LLM 序列的每个步骤提供清晰的可视性和调试信息,帮助开发者诊断和解决这些问题。
检查 LLM 应用程序运行的追踪 - 由 ClickHouse 提供支持
来源:LangChain
评估
很明显,用户在开发 LLM 应用程序时必须执行更广泛的其他任务,这些任务都属于评估的范畴。这些任务包括衡量提示和模型更改的影响、构建用于基准测试和微调的数据集、执行 A/B 测试和在线评估。因此,LangSmith 从一个可观测性工具发展成为一个更广泛的、一体化的开发者平台,适用于 LLM 驱动的应用程序生命周期的每个步骤。
并排查看测试运行 - 由 ClickHouse 提供支持
来源:LangChain
LangSmith 与现有工具有何不同?
Ankush 解释说,LLM 应用程序的构建导致了一个新的开发生命周期,这个生命周期非常独特,需要有自己的专用工具包。虽然有许多工具可以解决更广泛的可观测性用例,但 LLM 应用程序有其独特的挑战,这些挑战需要专门为用户处理数据的方式设计的工作流程。LangSmith 通过识别 LLM 应用程序开发周期中的常见步骤并提供工具来克服常见的相关挑战,从而提供这种专注的体验。
LangSmith 在 LLM 应用程序生命周期的每个阶段支持的工作流程
来源:LangChain
在选择数据库来支持 LangSmith 时,你们有什么要求?
当 LangChain 首次推出 LangSmith 时,他们 100% 由 Postgres 提供支持。这是启动应用程序并将其交付到用户手中的最快方式。他们也不完全确定用户将如何使用该应用程序,因此无法确定工作负载——例如,他们是否只是将其用作评估 LLM 工作流程的手段,从而稀疏地记录日志?
他们很快意识到,人们希望记录很大一部分生产数据,以执行特定的操作,例如跟踪和创建数据集、运行评估作业、A/B 测试和监控性能。这意味着需要支持高吞吐量摄取以及快速过滤,以便在用户界面中的图表上进行向下钻取。例如,用户可以过滤监控图表,这些图表会跟踪关键指标随时间的变化。此时,LangChain 团队开始意识到 Postgres 越来越难以满足他们的要求。
查看监控图表并按 LLM 类型分组 - 由 ClickHouse 提供支持
来源:LangChain
你们在使用 Postgres 时遇到了哪些挑战?
Postgres 在最初启动应用程序时很有效,但随着 LangChain 的规模扩大,他们在以生产所需的量摄取数据方面遇到了挑战。此外,它在高效处理他们需要支持的分析工作负载方面也显得力不从心。他们尝试提前物化统计数据,但这通常无法为用户提供最佳体验,因为用户只能根据预定义的物化来切片数据。这些物化作业以一定的时间间隔运行,并且在所需的数据大小下也消耗了大量的计算资源。当对 Postgres 的请求数量增加时,锁争用问题也变得突出。
“最终,很明显我们需要添加另一个数据库来补充 Postgres,以满足我们的用例并为我们的用户解锁实时洞察。”Ankush Gola,LangChain 联合创始人
是什么特别促使你们选择了 ClickHouse?
“我们使用 Postgres 的经验确定了对高吞吐量摄取的需求,以及对用户呈现的图表和统计信息产生的低延迟分析查询的需求。这自然而然地让我们相信我们需要一个 OLAP/实时分析数据库。”Ankush Gola,LangChain 联合创始人
LangChain 还确定需要在本地运行所选数据库以进行开发和 CI/CD,以及将其部署在自管理架构中和作为基于云的解决方案。前两个要求排除了许多传统的闭源云解决方案,并且必然导致选择开源解决方案。
“我们想要一些架构上简单易于部署的东西,并且不会使我们的基础设施更加复杂。我们研究了 Druid 和 Pinot,但这些都需要专用的摄取服务,连接到诸如 Kafka 之类的队列服务,而不是简单地接受 INSERT 语句。我们非常希望避免这种架构复杂性,特别是考虑到我们的自管理要求。”Ankush Gola,LangChain 联合创始人
一些简单的测试表明,ClickHouse 可以满足他们的性能要求,同时架构简单且与他们的所有部署模型兼容。所有这些要求最终促使 LangChain 选择 ClickHouse。
你们是如何听说 ClickHouse 的?
“当您身处数据库领域时,很难不听说 ClickHouse!”Ankush Gola,LangChain 联合创始人
Ankush 知道 ClickHouse 正在为 Cloudflare 等公司的许多高吞吐量工作负载提供支持。
你们在使用 ClickHouse 时遇到了哪些挑战?
Ankush 强调,对于用户来说,不要将 ClickHouse 视为像 Postgres 这样的其他数据库系统,甚至像 BigQuery 这样的数据仓库解决方案,这一点很重要。虽然 ClickHouse 是一个极其强大且灵活的工具,但用户应注意他们的排序键和引擎。
LangChain 的重要配置设置是确保他们正确理解和利用他们的排序键,以便针对他们期望查询数据的所有方式优化 ClickHouse。由于他们需要支持定期更新,这促使他们也使用了 ReplacingMergeTree 引擎。
Ankush 观察到,查询规划功能不如 Postgres 先进,用户需要更深入地了解内部机制和查询执行,才能优化查询。他建议用户熟悉 EXPLAIN
Api,这是一个重要的工具,可以帮助理解查询的执行方式。LangChain 期待新的分析器,希望它能解决许多手动优化查询的需求。
对 ClickHouse 新用户有什么建议吗?
虽然 LangSmith 界面的大部分由指标和日志的图表和统计信息组成,但它也收集并公开了大量的追踪数据。LangSmith 用户希望能够可视化单个追踪及其所有跨度。因此,后备数据存储还需要能够一次支持查询少量行。具体来说,常见的工作流程包括按排序键中的维度(例如,按用户反馈评分或按特定租户和会话)过滤追踪。在识别出感兴趣的追踪子集后,用户可以使用详细的追踪视图深入查看问题点。
记录来自 ChatLangChain 的追踪和反馈评分,在 LangSmith 中查看结果
来源:LangChain
最后一步需要按追踪 ID 查找,而追踪 ID 不是排序键的一部分(或者至少不在前几个位置)。此处的查找通常会导致全表扫描。为了避免这种情况,LangChain 使用了物化视图,其中目标表将追踪 ID 和运行 ID 作为排序键的一部分。存储在这些表中的行具有作为主表排序键的列。这允许 LangChain 将这些视图用作几乎是倒排索引,他们可以在其中基于追踪 ID 或运行 ID 查找主表的排序键值。然后,对主表的最终查询将包含一个过滤器,该过滤器可用于最大程度地减少扫描的行数。
LangChain 确定的方法最好如下所示
这种方法使 LangChain 能够有效地处理单个行查找,并且比使用二级索引和布隆过滤器更容易设置。
LangChain 在这里应用的方法与 Open Telemetry ClickHouse 集成使用的方法相同,以实现高效的追踪查找。
对于 LangSmith 云产品,在选择 ClickHouse Cloud 而不是自管理时,主要的考虑因素是什么?
“我们不想自己管理 ClickHouse 集群。能够在我们选择的 GCP 区域启动云服务非常轻松,并且在成本方面是不费吹灰之力的。”Ankush Gola,LangChain 联合创始人
除了 ClickHouse 之外,你们架构的其他关键组件是什么?
LangChain 仍然使用 Postgres 来管理一些应用程序状态。这与 ClickHouse 形成了很好的互补,因为他们需要应用程序某些部分的事务功能。
Redis 也被 LangSmith 广泛使用,既作为缓存,又作为支持异步作业队列的手段。
随着团队尝试使用涉及图像的多模态模型,云对象存储已变得越来越重要,成为这些模型的主要存储。
您对 ClickHouse Cloud 路线图上的任何内容特别期待吗?
Ankush 表示对生产中(目前是实验性的)倒排索引的可用性感兴趣,以便实现更快的全文搜索功能。目前,LangChain 正在使用数据跳过索引来加速文本搜索,但感觉这里还有进一步改进的空间。
展望未来,LangSmith + ClickHouse 的下一步是什么?
当我们最初采访 Ankush 时,他解释说他们正在努力改进的几个产品领域,包括
- 改进对回归测试的支持,允许用户提交更改(例如,对他们的提示、代码或模型进行更改),然后跟踪他们感兴趣的指标。这应该让用户根据一些对 LLM 响应进行评分并对他们的组织重要的标准(例如,重复性和简洁性)直观地了解他们的应用程序在实际场景中的表现。
- 引入在他们的生产数据样本上运行自动评估器的能力,然后检查响应。
- 目前显示追踪的方式不利于理解 LLM 和用户之间的聊天历史记录。虽然数据存在于此,但这只是他们承认需要改进视觉效果的地方。
几周后,这些功能已经发布并可用!🚀 🤯
所有这些功能都需要 ClickHouse 进行分析查询。此外,虽然不是新功能,但 LangChain 最近改进了用户的过滤选项,尤其是全文搜索。最后,随着他们的企业客户群不断增长,他们预计需要支持诸如 RBAC 和 SSO 之类的功能,这将不可避免地需要与 ClickHouse 更紧密的集成。