LangChain - 为何我们选择 ClickHouse 作为 LangSmith 的动力

2024-05-26 04:12

本文主要是介绍LangChain - 为何我们选择 ClickHouse 作为 LangSmith 的动力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

本文字数: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

满足您所有的在线分析列式数据库管理需求

这篇关于LangChain - 为何我们选择 ClickHouse 作为 LangSmith 的动力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003487

相关文章

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一