跳到主要内容
ClickHouse是一个高性能、面向列的数据库系统。它允许快速数据摄取,并针对分析查询进行了优化。 LangSmith使用ClickHouse作为跟踪和反馈的主要数据存储。默认情况下,自托管的LangSmith将使用LangSmith实例中捆绑的内部ClickHouse数据库。该数据库作为有状态集在与LangSmith应用程序相同的Kubernetes集群中运行,或作为Docker容器在与LangSmith应用程序相同的主机上运行。 但是,您可以将LangSmith配置为使用外部ClickHouse数据库,以便于管理和扩展。通过配置外部ClickHouse数据库,您可以管理数据库的备份、扩展和其他操作任务。虽然ClickHouse尚未成为Azure、AWS或Google Cloud中的原生服务,但您可以通过以下方式使用外部ClickHouse数据库运行LangSmith:
使用前两种选项(LangSmith管理的ClickHouse或ClickHouse Cloud)将在您的VPC之外部署ClickHouse服务。但是,这两种选项都支持私有端点,这意味着您可以将流量导向ClickHouse服务而无需将其暴露给公共互联网(例如通过AWS PrivateLink或GCP Private Service Connect)。此外,敏感信息可以配置为不存储在ClickHouse中。请联系support@langchain.dev获取更多信息。

要求

  • 您的LangSmith应用程序将具有网络访问权限的预配置ClickHouse实例(请参阅上面的选项)。
  • 对ClickHouse数据库具有管理员访问权限的用户。该用户将用于创建必要的表、索引和视图。
  • 我们支持独立ClickHouse和外部管理的集群部署。对于集群部署,请确保所有节点都运行相同的版本。请注意,捆绑的ClickHouse安装不支持集群设置。
  • 我们只支持ClickHouse版本 >= 23.9。使用ClickHouse版本 >= 24.2 需要 LangSmith v0.6 或更高版本。
  • 我们依赖于在您的ClickHouse实例上设置的一些配置参数。这些参数将在下面详细说明
<profiles>
  <default>
      <async_insert>1</async_insert> # Turn on async insert
      <async_insert_max_data_size>25000000</async_insert_max_data_size> # Flush data to disk after 25MB. You may need to adjust this based on your workload.
      <wait_for_async_insert>0</wait_for_async_insert> # Disable waiting for async insert by default
      <parallel_view_processing>1</parallel_view_processing> # Enable parallel view processing
      <materialize_ttl_after_modify>0</materialize_ttl_after_modify> # Disable TTL materialization after modify
      <wait_for_async_insert_timeout>120</wait_for_async_insert_timeout> # Set the timeout for waiting for async insert
      <lightweight_deletes_sync>0</lightweight_deletes_sync> # Disable lightweight deletes sync
      <allow_materialized_view_with_bad_select>1</allow_materialized_view_with_bad_select> # Allow materialized views with legacy SELECT statements that cause CH to fail
  </default>
</profiles>
我们的系统已根据上述配置参数进行调整。更改这些参数可能会导致意外行为。

高可用性复制ClickHouse集群

默认情况下,上述设置过程仅适用于单节点ClickHouse集群。
如果您想使用多节点ClickHouse集群实现高可用性,我们支持通过额外的必需配置来实现。此设置可以使用通过Zookeeper或Clickhouse Keeper复制数据的多节点Clickhouse集群。有关Clickhouse复制的更多信息,请参阅Clickhouse数据复制文档 为了使用复制的多节点Clickhouse设置LangSmith:
  • 您需要一个使用Keeper或Zookeeper进行数据复制并具有适当设置的ClickHouse集群。请参阅Clickhouse复制设置文档
  • 您需要在LangSmith配置部分设置集群设置,特别是`cluster`设置,以匹配您的Clickhouse集群名称。在运行Clickhouse迁移时,这将使用`Replicated`表引擎。
  • 除了高可用性之外,如果您想在Clickhouse节点之间进行负载均衡(以分配读写操作),我们建议使用负载均衡器或DNS负载均衡在您的Clickhouse服务器之间进行轮询。
  • 注意:您需要在首次启动LangSmith并运行Clickhouse迁移之前启用您的`cluster`设置。这是一个要求,因为表引擎需要创建为`Replicated`表引擎,而不是非复制引擎类型。
当启用`cluster`运行迁移时,迁移将创建`Replicated`表引擎类型。这意味着数据将在集群中的服务器之间进行复制。这是一个主-主设置,任何服务器都可以处理读、写或合并操作。
有关复制ClickHouse集群的示例设置,请参阅LangSmith Helm chart repo中示例下的复制ClickHouse部分

LangSmith 管理的 ClickHouse

  • 如果使用LangSmith管理的ClickHouse,您需要设置LangSmith VPC和ClickHouse VPC之间的VPC对等连接。请联系support@langchain.dev获取更多信息。
  • 您还需要设置 Blob 存储。您可以在Blob 存储文档中阅读有关 Blob 存储的更多信息。
LangSmith 管理的 ClickHouse 安装使用 SharedMerge 引擎,该引擎会自动对其进行集群化并将计算与存储分离。
欲了解更多信息,请参阅托管 ClickHouse 页面。

参数

您需要向LangSmith安装提供几个参数来配置外部ClickHouse数据库。这些参数包括:
  • 主机:ClickHouse数据库的主机名或IP地址
  • HTTP端口:ClickHouse数据库用于HTTP连接的监听端口
  • 原生端口:ClickHouse数据库用于原生连接的监听端口
  • 数据库:LangSmith应使用的ClickHouse数据库名称
  • 用户名:连接到ClickHouse数据库所用的用户名
  • 密码:连接到ClickHouse数据库所用的密码
  • 集群(可选):如果使用外部 Clickhouse 集群,则为 Clickhouse 集群的名称。设置后,LangSmith 将在集群上运行迁移并跨实例复制数据。
集群部署的重要注意事项
  • 集群设置必须在新模式上配置 - 现有独立 ClickHouse 实例无法转换为集群模式。
  • 集群仅支持外部管理的 ClickHouse 部署。它与捆绑的 ClickHouse 安装不兼容,因为这些安装不包含所需的 ZooKeeper 配置。
  • 使用集群部署时,LangSmith 将自动
  • 在集群中的所有节点上运行数据库迁移
  • 配置表以实现跨集群的数据复制
请注意,尽管数据在节点之间复制,但 LangSmith 不会配置分布式表或处理查询路由 - 查询将定向到指定的主机。如果需要,您需要在基础设施层面处理任何负载均衡或查询分发。

配置

有了这些参数,您可以配置您的LangSmith实例以使用预置的ClickHouse数据库。您可以通过修改LangSmith Helm Chart安装的`config.yaml`文件或Docker安装的`.env`文件来完成此操作。
clickhouse:
  external:
    enabled: true
    host: "host"
    port: "http port"
    nativePort: "native port"
    user: "default"
    password: "password"
    database: "default"
    tls: false
    cluster: "my_cluster_name"  # Optional: Set this if using an external Clickhouse cluster
配置完成后,您应该能够重新安装您的LangSmith实例。如果一切配置正确,您的LangSmith实例现在应该正在使用您的外部ClickHouse数据库。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.