"我们对 ClickHouse 有着积极的体验。它使我们能够将 LangSmith 扩展到生产工作负载,并提供一项服务,用户可以在其中记录所有数据。如果没有 ClickHouse,我们将无法做到这一点。"
LangChain 联合创始人 Ankush Gola
介绍
我们越来越看到公司使用 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 的请求数量增加时,锁争用问题也成为一个问题。
"最终,很明显我们需要添加另一个数据库来补充 Postgres 以满足我们的用例,并为我们的用户解锁实时洞察力。"LangChain 联合创始人 Ankush Gola
是什么让你们最终选择了 ClickHouse?
"我们使用 Postgres 的经验确定了对高吞吐量摄取的需求,以及对来自呈现给用户的图表和统计数据的低延迟分析查询的需求。这自然使我们相信我们需要一个 OLAP/实时分析数据库。"LangChain 联合创始人 Ankush Gola
LangChain 还确定了需要在本地运行所选数据库以进行开发和 CI/CD,以及将其部署在自管理架构中和作为基于云的解决方案的需求。前两个需求排除了许多传统的闭源云解决方案,并不可避免地转向开源解决方案。
"我们想要一些在架构上易于部署并且不会使我们的基础设施变得更复杂的东西。我们研究了 Druid 和 Pinot,但这些都需要专门的摄取服务,并连接到 Kafka 等队列服务,而不是简单地接受 INSERT 语句。我们热衷于避免这种架构复杂性,尤其是在考虑到我们的自管理需求的情况下。"LangChain 联合创始人 Ankush Gola
一些简单的测试表明,ClickHouse 可以满足他们的性能需求,同时在架构上保持简单并与他们所有的部署模型兼容。所有这些需求最终促使 LangChain 选择了 ClickHouse。
你们是如何了解 ClickHouse 的?
"当你在数据库领域时,很难不听到 ClickHouse 的消息!"LangChain 联合创始人 Ankush Gola
Ankush 知道 ClickHouse 在 Cloudflare 等公司为许多高吞吐量工作负载提供支持。
使用 ClickHouse 遇到了哪些挑战?
Ankush 强调,用户不应将 ClickHouse 视为其他数据库系统(如 Postgres 或甚至 BigQuery 等数据仓库解决方案)。虽然 ClickHouse 是一个非常强大和灵活的工具,但用户应注意其排序键和引擎。
LangChain 在配置 ClickHouse 时,最重要的环节是确保他们正确理解并利用排序键,以便 ClickHouse 能够针对他们期望查询数据的所有方式进行优化。由于他们需要支持定期更新,因此他们也使用了 ReplacingMergeTree 引擎。
Ankush 观察到,ClickHouse 的查询规划能力不如 Postgres 先进,用户需要更深入地了解 ClickHouse 的内部机制和查询执行过程才能优化查询。他建议用户熟悉 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 区域中轻松启动云服务,并且在成本方面也是一个明智的选择。”LangChain 联合创始人 Ankush Gola
除了 ClickHouse 之外,架构的其他关键组件是什么?
LangChain 仍然使用 Postgres 来管理一些应用程序状态。这与 ClickHouse 很好地互补,因为他们需要应用程序部分的事务功能。
Redis 也在整个 LangSmith 中用作缓存和支持异步作业队列的一种手段。
随着团队尝试涉及图像的多模态模型,云对象存储作为这些模型的主要存储变得越来越重要。
您对 ClickHouse Cloud 路线图有什么特别期待的吗?
Ankush 表示有兴趣在生产环境中使用反向索引(目前处于实验阶段)以启用更快的全文搜索功能。目前,LangChain 使用数据跳过索引来加快文本搜索速度,但认为这里还有进一步改进的空间。
展望未来,LangSmith + ClickHouse 的下一步是什么?
当我们最初采访 Ankush 时,他解释说他们正在努力改进几个产品领域,包括
- 改进对回归测试的支持,允许用户提交更改(例如,对其提示、代码或模型),然后跟踪他们感兴趣的指标。这应该让用户根据一些对 LLM 响应进行评分并对他们的组织很重要的标准(例如重复性和简洁性)了解其应用程序在现实场景中的性能。
- 引入能够在生产数据样本上运行自动评估器然后检查响应的功能。
- 当前显示跟踪的方式不利于理解 LLM 和用户之间的聊天历史记录。虽然数据存在于这里,但他们承认需要在视觉上进行改进。
几周后,这些功能已经发布并可用!🚀 🤯
所有这些功能都需要 ClickHouse 进行分析查询。此外,虽然不是新功能,但 LangChain 最近改进了用户的过滤选项,尤其是全文搜索。最后,随着其企业客户群的增长,他们预计需要支持诸如 RBAC 和 SSO 之类的功能,这将不可避免地需要与 ClickHouse 进行更紧密的集成。