本文字数:4742;估计阅读时间:12 分钟
作者:Ankush Gola
审校:庄晓东(魏庄)
本文在公众号【ClickHouseInc】首发
“我们在使用 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 调用和决策流程。这使得理解底层发生的情况变得具有挑战性,用户需要调试无限的代理循环或存在过度使用 Token 的情况。鉴于这里存在明显的需求,LangSmith 最初作为一个可观测性工具,旨在通过在 LLM 序列的每一步提供清晰的可见性和调试信息,帮助开发人员诊断和解决这些问题。
检查由 ClickHouse 驱动的 LLM 应用运行的跟踪
来源:LangChain
评估
很明显,在开发 LLM(大语言模型)应用时,用户必须执行更广泛的其他任务,这些任务属于评估范畴。这些任务包括衡量对提示和模型的更改的影响,构建用于基准测试和微调的数据集,执行 A/B 测试和在线评估。因此,LangSmith 从一个可观测性工具演变为一个更广泛的全能开发者平台,涵盖了 LLM 应用生命周期的每个步骤。
并排查看测试运行 - 由 ClickHouse 提供支持
来源:LangChain
LangSmith 与现有工具有何不同?
Ankush 解释说,构建 LLM(大语言模型)应用导致了一个非常独特的新开发生命周期,并需要其专用的工具包。虽然有许多工具适用于更广泛的可观测性用例,但 LLM 应用有其独特的挑战,需要专门为用户处理数据的方式而设计的工作流程。LangSmith 通过识别 LLM 应用开发周期中的常见步骤,并提供工具来克服通常相关的挑战,提供了这种专注的体验。
LangSmith 在 LLM(大语言模型)应用生命周期的每个阶段支持的工作流程
来源:LangChain
在选择用于支持 LangSmith 的数据库时,您有哪些要求?
当 LangChain 首次推出 LangSmith 时,他们完全依赖于 Postgres。这是最快的方式来启动应用并让用户尝试。同时,他们也无法确定用户会如何使用该应用,因此无法确定工作负载——例如,他们是否只会将其用作评估 LLM 工作流程的工具,从而记录稀疏的数据?
他们很快意识到,用户想要记录生产数据的大部分内容,以执行特定操作,如跟踪和创建数据集、运行评估作业、进行 A/B 测试和监视性能。这意味着需要支持高吞吐量的摄入,并且需要快速过滤以便在用户界面的图表上进行细化。例如,用户可以在跟踪关键指标随时间变化的监视图上进行过滤。在这一点上,LangChain 团队意识到,Postgres 越来越难以满足他们的要求。
查看监控图表并按 LLM 类型分组 - 由 ClickHouse 提供支持
致谢:LangChain
您在使用 Postgres 时面临的挑战是什么?
Postgres 在最初启动应用时表现良好,但随着 LangChain 的规模扩大,他们遇到了其处理生产所需数据量的能力挑战。此外,它在处理他们需要支持的分析工作负载时效率不高。他们尝试提前物化统计数据,但这通常不能为用户提供最佳体验,因为用户只能按照预定义的物化方式对数据进行切片。这些物化作业定期运行,并且在所需的数据量上也消耗了大量计算资源。随着对 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 知道像 Cloudflare 这样的公司正在使用 ClickHouse 来支持大规模的高吞吐量工作负载。
在使用 ClickHouse 时,LangChain 遇到了哪些挑战呢?
Ankush 特别强调,用户在使用 ClickHouse 时不应该将其视为其他数据库系统(如 Postgres)或数据仓库解决方案(如 BigQuery)。尽管 ClickHouse 是一款功能强大且灵活的工具,但用户应该关注排序键和引擎的选择。
LangChain 的重要配置是确保他们正确理解并正确利用排序键,使 ClickHouse 能够优化数据的所有查询方式。由于他们需要支持定期更新,因此他们使用了 ReplacingMergeTree 引擎。
Ankush 发现,与 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 区域轻松启动一个云服务,在成本方面是一个毫无疑问的选择。”
Ankush Gola,LangChain 的联合创始人
除了 ClickHouse,您的架构中还有哪些关键组件?
LangChain 还在使用 Postgres 来管理一些应用程序状态。这与 ClickHouse 很好地相辅相成,因为他们需要对应用程序的某些部分进行事务处理。
Redis 在 LangSmith 中被广泛用作缓存,并支持异步作业队列。
随着团队尝试涉及图像的多模型,云对象存储变得越来越重要,成为这些模型的主要存储介质。
您对 ClickHouse Cloud 未来的期待有哪些?
Ankush 表示,他特别期待倒排索引在生产环境中的可用性(目前还在实验阶段),以实现更快速的全文搜索功能。目前,LangChain 使用数据跳跃索引加速文本搜索,但他们认为这方面还有改进的空间。
LangSmith + ClickHouse 未来的计划是什么?
当我们最初采访 Ankush 时,他解释说他们正在努力改进几个产品方面,包括:
-
改进对回归测试的支持,允许用户提交更改,例如他们的提示、代码或模型,然后跟踪他们感兴趣的指标。
这样用户就可以根据评分标准,例如重复性和简洁性,对应用程序在真实场景中的表现有更直观的了解。
-
引入在生产数据样本上运行自动评估器并检查响应的能力。
-
目前显示跟踪的方式并不能很好地展示 LLM 与用户之间的聊天历史。
虽然数据已经存在,但他们意识到在视觉呈现上还有改进的空间。
几周后,这些功能已经发布并可用!🚀🤯
所有这些功能都依赖于 ClickHouse 进行分析查询。此外,虽然不是新功能,但 LangChain 最近改进了用户的过滤选项,尤其是全文搜索。最后,随着他们的企业客户群体的增长,他们预计需要支持诸如 RBAC 和 SSO 等功能,这将需要与 ClickHouse 进行更紧密的集成。
征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com
联系我们
手机号:13910395701
邮箱:Tracy.Wang@clickhouse.com
满足您所有的在线分析列式数据库管理需求