Skip to main content
在继续本指南之前,请先阅读 LangSmith 架构概述连接外部 ClickHouse 的指南
LangSmith 使用 ClickHouse 作为追踪反馈的主要存储引擎。为了便于管理和扩展,建议将自托管的 LangSmith 实例连接到外部 ClickHouse 实例。LangSmith 托管的 ClickHouse 是一个选项,允许您使用由 LangSmith 团队监控和维护的完全托管的 ClickHouse 实例。

架构概述

将 LangSmith 托管的 ClickHouse 与您的自托管 LangSmith 实例结合使用的架构,与使用完全自托管的 ClickHouse 实例类似,但有几个关键区别:
  • 您需要在您的 LangSmith 实例和 LangSmith 托管的 ClickHouse 实例之间建立私有网络连接。这是为了确保您的数据安全,并且您可以从自托管的 LangSmith 实例连接到 ClickHouse 实例。
  • 使用此选项时,追踪的敏感信息(输入和输出)将存储在您云环境内的云对象存储(S3 或 GCS)中,而不是 ClickHouse 中,以确保敏感信息不会离开您的 VPC。有关特定数据字段存储位置的更多详细信息,请参阅数据存储
  • LangSmith 团队将监控您的 ClickHouse 实例,并确保其平稳运行。这使我们能够跟踪诸如运行摄取延迟和查询性能等指标。
整体架构如下所示: LangSmith 托管 ClickHouse 架构。

要求

  • 您必须使用受支持的 Blob 存储选项。 请阅读 Blob 存储指南 了解更多信息。
  • 要使用私有端点,请确保您的 VPC 位于 ClickHouse Cloud 支持的区域中。否则,您将需要使用一个我们将通过防火墙规则进行保护的公共端点。您的 VPC 需要有一个 NAT 网关,以便我们能够将您的流量加入允许列表。
  • 您必须拥有一个可以连接到 LangSmith 托管 ClickHouse 服务的 VPC。您需要与我们的团队合作来设置必要的网络。
  • 您必须运行一个 LangSmith 自托管实例。您可以将我们的托管 ClickHouse 服务与 KubernetesDocker 安装一起使用。

数据存储

ClickHouse 存储运行反馈数据,具体包括:
  • 所有反馈数据字段。
  • 部分运行数据字段。
有关字段列表,请参阅存储的运行数据字段存储的反馈数据字段 LangChain 将敏感应用数据定义为运行的 inputsoutputserrorsmanifestsextrasevents,因为这些字段可能包含 LLM 提示词和补全。使用 LangSmith 托管的 ClickHouse 时,这些敏感字段存储在您云环境内的云对象存储(S3 或 GCS)中,而运行数据的其余部分存储在 ClickHouse 中,确保敏感信息永远不会离开您的 VPC。

存储的反馈数据字段

由于所有反馈数据都存储在 ClickHouse 中,请勿在反馈(分数和注释/评论)或存储的运行数据字段中提到的任何其他运行字段中发送敏感信息。
使用 LangSmith 托管的 ClickHouse 设置时,所有反馈数据字段都存储在 ClickHouse 中
Field NameTypeDescription
idUUIDUnique identifier for the record itself
created_atdatetimeTimestamp when the record was created
modified_atdatetimeTimestamp when the record was last modified
session_idUUIDUnique identifier for the experiment or tracing project the run was a part of
run_idUUIDUnique identifier for a specific run within a session
keystringA key describing the criteria of the feedback, e.g. 'correctness'
scorenumberNumerical score associated with the feedback key
valuestringReserved for storing a value associated with the score. Useful for categorical feedback.
commentstringAny comment or annotation associated with the record. This can be a justification for the score given.
correctionobjectReserved for storing correction details, if any
feedback_sourceobjectObject containing information about the feedback source
feedback_source.typestringThe type of source where the feedback originated, e.g. 'api', 'app', 'evaluator'
feedback_source.metadataobjectReserved for additional metadata, currently
feedback_source.user_idUUIDUnique identifier for the user providing feedback
这份参考文档解释了存储的反馈格式,这是 LangSmith 表示运行评估分数和注释的方式。

存储的运行数据字段

运行数据字段在托管的 ClickHouse 数据库和您的云对象存储(例如 S3 或 GCS)之间拆分存储。
对于存储在对象存储中的运行字段,ClickHouse 中仅保留引用或指针。例如,inputsoutputs 的内容被卸载到 S3/GCS,ClickHouse 记录在 inputs_s3_urlsoutputs_s3_urls 字段中存储相应的 S3 URL。
下表详细说明了每个运行字段及其存储位置:
字段存储位置
idClickHouse
nameClickHouse
inputs对象存储
run_typeClickHouse
start_timeClickHouse
end_timeClickHouse
extra对象存储
error对象存储
outputs对象存储
events对象存储
tagsClickHouse
trace_idClickHouse
dotted_orderClickHouse
statusClickHouse
child_run_idsClickHouse
direct_child_run_idsClickHouse
parent_run_idsClickHouse
feedback_statsClickHouse
reference_example_idClickHouse
total_tokensClickHouse
prompt_tokensClickHouse
completion_tokensClickHouse
total_costClickHouse
prompt_costClickHouse
completion_costClickHouse
first_token_timeClickHouse
session_idClickHouse
in_datasetClickHouse
parent_run_idClickHouse
execution_order (已弃用)ClickHouse
serializedClickHouse
manifest_id (已弃用)ClickHouse
manifest_s3_idClickHouse
inputs_s3_urlsClickHouse
outputs_s3_urlsClickHouse
price_model_idClickHouse
app_pathClickHouse
last_queued_atClickHouse
share_tokenClickHouse
这份参考文档解释了存储的运行(跨度)的格式,这些是追踪的构建块。