在继续阅读本指南前,请先查看 LangSmith 架构概览连接外部 ClickHouse 的指南
LangSmith 将 ClickHouse 作为 追踪反馈 的核心存储引擎。为了便于管理与扩展,建议在自托管部署中连接外部 ClickHouse。选择 LangSmith 托管 ClickHouse 时,可以使用由 LangSmith 团队维护与监控的完全托管版 ClickHouse。

架构概览

在自托管 LangSmith 中使用托管版 ClickHouse 的整体架构与完全自建 ClickHouse 相似,但需注意以下差异:
  • 需要在自托管的 LangSmith 与托管版 ClickHouse 之间建立私有网络连接,以确保数据安全并允许实例之间互通。
  • 采用该方案时,追踪中的敏感信息(如输入与输出)将存储在你所管理的云对象存储(S3 或 GCS)中,而不是 ClickHouse,从而保证敏感数据不会离开你的 VPC。更多字段存储位置请参见数据存储
  • LangSmith 团队会监控你的 ClickHouse 实例,确保运行稳定,包括跟踪运行写入延迟、查询性能等指标。
整体架构如下所示: LangSmith 托管 ClickHouse 架构(明亮主题)。

前置要求

  • 必须使用受支持的对象存储。 详情请参阅对象存储指南
  • 若要使用私有端点,需确保 VPC 位于 ClickHouse Cloud 支持的区域内;否则需通过公共端点访问,并由我们配合防火墙规则保障安全。你的 VPC 还需具备 NAT 网关,以便将流量加入白名单。
  • 需要具备能够连接至 LangSmith 托管 ClickHouse 服务的 VPC,并与我们的团队合作完成必要的网络配置。
  • 你必须已经运行自托管的 LangSmith 实例。托管版 ClickHouse 适用于 KubernetesDocker 部署方式。

数据存储

ClickHouse 用于存储 运行(runs)反馈(feedback) 数据,具体包括:
  • 所有反馈相关字段。
  • 部分运行数据字段。
字段列表请参考运行数据存储字段反馈数据存储字段 LangChain 将运行中的 inputsoutputserrorsmanifestsextrasevents 定义为敏感应用数据,因为这些字段可能包含 LLM 提示词与回答。在使用托管版 ClickHouse 时,这些敏感字段会保存到你所在云环境的对象存储(S3 或 GCS),而其余运行数据则存储在 ClickHouse 中,确保敏感信息不离开你的 VPC。

反馈数据存储字段

由于所有反馈数据都会存储在 ClickHouse 中,请勿在反馈(评分与注释/评论)或运行数据存储字段中提及的其它字段中写入敏感信息。
在 LangSmith 托管 ClickHouse 方案中,所有反馈字段均存储在 ClickHouse
字段名称类型描述
idUUID记录本身的唯一标识符
created_atdatetime创建记录时的时间戳
modified_atdatetime上次修改记录时的时间戳
session_idUUID运行所属的实验或跟踪项目的唯一标识符
run_idUUID会话中特定运行的唯一标识符
keystring描述反馈标准的键,例如 “correctness”
scorenumber与反馈键关联的数值分数
valuestring保留用于存储与分数关联的值。对分类反馈很有用。
commentstring与记录关联的任何评论或注释。这可以是给定分数的理由。
correctionobject保留用于存储更正详细信息(如果有)
feedback_sourceobject包含有关反馈源的信息的对象
feedback_source.typestring反馈源的类型,例如 “api”、“app”、“evaluator”
feedback_source.metadataobject保留用于其他元数据
feedback_source.user_idUUID提供反馈的用户的唯一标识符
可参考反馈数据格式了解 LangSmith 如何表示运行的评估分数与注释。

运行数据存储字段

运行数据字段会在托管 ClickHouse 与云对象存储(如 S3、GCS)之间分布存储。
对于存储在对象存储中的运行字段,ClickHouse 仅保留引用或指针。例如,inputsoutputs 的实际内容会迁移至 S3/GCS,而 ClickHouse 仅在 inputs_s3_urlsoutputs_s3_urls 字段中记录相应的对象链接。
下表列出了各运行字段及其存储位置:
FieldStorage Location
idClickHouse
nameClickHouse
inputsObject Storage
run_typeClickHouse
start_timeClickHouse
end_timeClickHouse
extraObject Storage
errorObject Storage
outputsObject Storage
eventsObject Storage
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 (deprecated)ClickHouse
serializedClickHouse
manifest_id (deprecated)ClickHouse
manifest_s3_idClickHouse
inputs_s3_urlsClickHouse
outputs_s3_urlsClickHouse
price_model_idClickHouse
app_pathClickHouse
last_queued_atClickHouse
share_tokenClickHouse
请参阅运行数据格式,了解追踪基础单元(跨度)在存储中的表示方式。
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.