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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从ES到ClickHouse,Bonree ONE平台更轻更快!

本文字数:8052;估计阅读时间:21 分钟 作者:博睿数据 李骅宸(太道)& 娄志强(冬青) 本文在公众号【ClickHouseInc】首发 本系列第一篇内容: 100%降本增效!…

Mysql之基本架构

1.Mysql简介 mysql是一种关系型数据库,由表结构来存储数据与数据之间的关系,同时为sql(结构化查询语句)来进行数据操作。 sql语句进行操作又分为几个重要的操作类型 DQL: Data Query Language 数据查询语句 DML: Data Manipulation Language 添加、删…

重置服务器之后 SSH 登录报错:REMOTE HOST IDENTIFICATION HAS CHANGED!

问题原因: 报错是由于远程的主机的公钥发生了变化导致的。ssh服务是通过公钥和私钥来进行连接的,它会把每个曾经访问过计算机或服务器的公钥(public key),记录在~/.ssh/known_hosts 中,当下次访问曾经访问…

使用vue3实现右侧瀑布流滑动时左侧菜单的固定与取消固定

实现效果 实现方法 下面展示的为关键代码,想要查看完整流程及代码可参考https://blog.csdn.net/weixin_43312391/article/details/139197550 isMenuBarFixed为控制左侧菜单是否固定的参数 // 监听滚动事件 const handleScroll () > {const scrollTopThreshol…

读书笔记-Java并发编程的艺术--持续更新中

文章目录 第1章 并发编程的挑战1.1 上下文切换1.1.1 多线程一定快吗1.1.2 如何减少上下文切换 1.2 死锁1.3 资源限制的挑战 第2章 Java并发机制的底层实现原理第3章 Java内存模型第4章 Java编发编程基础第5章 Java中的锁第6章 Java并发容器和框架第7章 Java中的13个原子操作类第…

DA-CLIP论文阅读笔记

这是ICLR2024的一篇用VLM做multi-task image restoration的论文首页图看起来就很猛啊,一个unified模型搞定10个任务: 文章的贡献点主要是两个,一个是提出一个利用Image Controller,CLIP,cross-attention 和 diffusion …

使用elementUI的form表单校验时,错误提示位置异常解决方法

问题 最近在做项目时遇到一个问题&#xff0c;使用elementUI的Descriptions 描述列表与form表单校验时&#xff0c;遇到校验信息显示的位置不对&#xff0c;效果如图&#xff1a; 期望显示在表格中。 效果 代码 html <el-form :model"form":rules"rules…

深入解析文华量化交易策略---交易指令如何选择

随着金融投资的迅猛发展&#xff0c;自动化策略模型已逐渐成为现代投资领域的一股重要力量。量化交易模型均以数据为驱动&#xff0c;通过运用数学模型和算法&#xff0c;对期货、黄金等投资市场走势进行精准预测和高效交易。 艾云策略整理了量化策略相关资料&#xff0c;希望通…

浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想

整合第三方技术 不要单单学习指定技术与springboot整合的方式 学习目标的是整合整体的技术的思路 拿到任何一个第三方技术后我们在springboot中如何操作 这是真正我们应该学习的东西 以后能整合任意技术 整合JUnit JUnit 是一个流行的开源测试框架&#xff0c;用于 Java …

如何快速复现NEJM文章亚组分析森林图?

现在亚组分析好像越来越流行&#xff0c;无论是观察性研究还是RCT研究&#xff0c;亚组分析一般配备森林图。 比如下方NEJM这张图&#xff0c;配色布局都比较经典美观&#xff01; 但是在使用R语言绘制时&#xff0c;想要绘制出同款森林图&#xff0c;少不了复杂参数进行美化调…

windows安装kafka环境

1.安装jdk8 参考教程java8安装教程_java8u371安装教程-CSDN博客 下载kafak安装包&#xff1a; kafka_2.12-3.6.1.tgz 解压&#xff1a; 启动ZooKeeper软件&#xff0c;kafka内部已近集成了该软件。 进入Kafka解压缩文件夹的config目录&#xff0c;修改zookeeper.properti…

傲软抠图一款专为抠图打造的AI智能抠图应用,智能识别人物物体抠图软件,无广vip版 v1.8.1

软件介绍 傲软抠图&#xff0c;作为一款高度专业化的智能人工智能图片处理软件&#xff0c;被设计专门用于执行精确的图像提取功能。该程序利用其先进的算法能动地识别和分辨图像中的人物或物体轮廓&#xff0c;并能够从原始图片材料中分离出带有透明背景的目标图像。除了自动…

GIT 新建分支和合并分支

文章目录 前言一、新建分支二、切回老分支&#xff0c;保留新分支的更改三、合并分支 前言 本文主要针对以下场景进行介绍&#xff1a; 场景一&#xff1a;创建新的分支 当前分支(dev_1)已经开发完毕&#xff0c;下一期的需求需要在新分支(dev_2)上进行开发&#xff0c;如何创…

[机缘参悟-187] - 《道家-水木然人间清醒1》读书笔记 - 真相本质 -10- 关系界限 - 一个人只有放下自我,才能看清世界的真相

目录 一、现实生活中&#xff0c;每个人都是盲人摸象 二、一个人认知的本质是神经网络的模型训练 三、每个人的认知具有局限 四、放下自我&#xff0c;就是跳出自我的认知局限 五、站在上帝的视角&#xff0c;俯瞰不同众生的千差万别的大脑认知系统 六、个体的独特性&…

【Linux】信号>信号产生信号处理信号保存信号详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.信号入门 1.1 生活角度的信号 1.2 技术应用角度的信号 1.3 信号概念 1.4 信号处理常见方式概览 2.产生信号 2.1 通过终端按键…

打包要求 minCompileSdk 使用指定版本及以上

我当前的 compileSdkVersion 30&#xff0c;因为依赖了 androidx.core:core:1.9.0 它要求最低 compileSdkVersion 33。 那么如果我不想升级 compileSdkVersion 应该怎么办&#xff1f; 答&#xff1a;当然是降低 core:core 版本&#xff01; 看看谁依赖了这两个版本 android…

CAN笔记第二篇,车载测试继续学起来!

在CAN协议中&#xff0c;“帧”是一个包含完整信息的独立单元&#xff0c;它具有特定的格式和结构&#xff0c;以确保数据在CAN总线上的可靠传输。这里的“帧”字可以理解为&#xff1a; 完整性&#xff1a;一个帧包含了所有必要的信息&#xff0c;从起始到结束&#xff0c;都遵…

# 分布式链路追踪_skywalking_学习(2)

分布式链路追踪_skywalking_学习&#xff08;2&#xff09; 一、分布式链路追踪_skywalking &#xff1a;Rpc 调用监控 1、Skywalking(6.5.0) 支持的 Rpc 框架有以下几种&#xff1a; Dubbo 2.5.4 -> 2.6.0Dubbox 2.8.4Apache Dubbo 2.7.0Motan 0.2.x -> 1.1.0gRPC 1.…

excel数据导入到数据库的方法(二)

以前写了一篇excel导入数据到数据库的文章&#xff0c;是先将excel导入到datatable中在进行批量插入操作&#xff0c;实现数据的导入工作&#xff1b;最近在写一个上传数据服务时&#xff0c;发现有些许问题&#xff0c;在此予以更正&#xff0c;问题描述&#xff1a; 就会报异…

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…