Skip to main content
The TensorZero Gateway stores inference and feedback data in ClickHouse. This data can be used for observability, experimentation, and optimization.

ChatInference

The ChatInference table stores information about inference requests for Chat Functions made to the TensorZero Gateway. A ChatInference row can be associated with one or more ModelInference rows, depending on the variant’s type. For chat_completion, there will be a one-to-one relationship between rows in the two tables. For other variant types, there might be more associated rows.
ColumnTypeNotes
idUUIDMust be a UUIDv7
function_nameString
variant_nameString
episode_idUUIDMust be a UUIDv7
inputString (JSON)input field in the /inference request body
outputString (JSON)Array of content blocks
tool_paramsString (JSON)Deprecated. Only present for legacy data. Use dynamic_tools, dynamic_provider_tools, allowed_tools, tool_choice, and parallel_tool_calls instead.
inference_paramsString (JSON)Object with any inference parameters per variant type (e.g. {"chat_completion": {"temperature": 0.5}})
processing_time_msUInt32
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"user_id": "123"})
extra_bodyNullable(String)Additional request body parameters passed through to the model provider
ttft_msNullable(UInt32)Time to first token (only available in streaming inferences)
dynamic_toolsArray(String)Dynamic tool definitions provided at inference time (each element is a JSON string)
dynamic_provider_toolsArray(String)Dynamic provider tool definitions provided at inference time (each element is a JSON string)
allowed_toolsNullable(String)Allowed tools specification (JSON string)
tool_choiceNullable(String)Tool choice specification (JSON string)
parallel_tool_callsNullable(Bool)Whether parallel tool calls are allowed
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

JsonInference

The JsonInference table stores information about inference requests for JSON Functions made to the TensorZero Gateway. A JsonInference row can be associated with one or more ModelInference rows, depending on the variant’s type. For chat_completion, there will be a one-to-one relationship between rows in the two tables. For other variant types, there might be more associated rows.
ColumnTypeNotes
idUUIDMust be a UUIDv7
function_nameString
variant_nameString
episode_idUUIDMust be a UUIDv7
inputString (JSON)input field in the /inference request body
outputString (JSON)Object with parsed and raw fields
output_schemaString (JSON)Schema that the output must conform to
inference_paramsString (JSON)Object with any inference parameters per variant type (e.g. {"chat_completion": {"temperature": 0.5}})
processing_time_msUInt32
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"user_id": "123"})
extra_bodyNullable(String)Additional request body parameters passed through to the model provider
auxiliary_contentStringAuxiliary content produced during inference (e.g. Thought blocks in chain-of-thought)
ttft_msNullable(UInt32)Time to first token (only available in streaming inferences)
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

ModelInference

The ModelInference table stores information about each inference request to a model provider. This is the inference request you’d make if you had called the model provider directly.
ColumnTypeNotes
idUUIDMust be a UUIDv7
inference_idUUIDMust be a UUIDv7
raw_requestStringRaw request as sent to the model provider (varies)
raw_responseStringRaw response from the model provider (varies)
model_nameStringName of the model used for the inference
model_provider_nameStringName of the model provider used for the inference
input_tokensNullable(UInt32)
output_tokensNullable(UInt32)
response_time_msNullable(UInt32)
ttft_msNullable(UInt32)Only available in streaming inferences
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
systemNullable(String)The system input to the model
input_messagesArray(RequestMessage)The user and assistant messages input to the model
outputArray(ContentBlock)The output of the model
finish_reasonNullable(Enum(‘stop’, ‘length’, ‘tool_call’, ‘content_filter’, ‘unknown’, ‘stop_sequence’))Reason the model stopped generating
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
A RequestMessage is an object with shape {role: "user" | "assistant", content: List[ContentBlock]} (content blocks are defined here).

DynamicInContextLearningExample

The DynamicInContextLearningExample table stores examples for dynamic in-context learning variants.
ColumnTypeNotes
idUUIDMust be a UUIDv7
function_nameString
variant_nameString
namespaceString
inputString (JSON)
outputString
embeddingArray(Float32)
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)

BooleanMetricFeedback

The BooleanMetricFeedback table stores feedback for metrics of type = "boolean".
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7 that is either inference_id or episode_id depending on level in metric config
metric_nameString
valueBool
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"author": "Alice"})
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

FloatMetricFeedback

The FloatMetricFeedback table stores feedback for metrics of type = "float".
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7 that is either inference_id or episode_id depending on level in metric config
metric_nameString
valueFloat32
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"author": "Alice"})
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

CommentFeedback

The CommentFeedback table stores feedback provided with metric_name of "comment". Comments are free-form text feedbacks.
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7 that is either inference_id or episode_id depending on level in metric config
target_type"inference" or "episode"
valueString
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"author": "Alice"})
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

DemonstrationFeedback

The DemonstrationFeedback table stores feedback in the form of demonstrations. Demonstrations are examples of good behaviors.
ColumnTypeNotes
idUUIDMust be a UUIDv7
inference_idUUIDMust be a UUIDv7
valueStringThe demonstration or example provided as feedback (must match function output)
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
tagsMap(String, String)User-assigned tags (e.g. {"author": "Alice"})
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

ModelInferenceCache

The ModelInferenceCache table stores cached model inference results to avoid duplicate requests.
ColumnTypeNotes
short_cache_keyUInt64First part of composite key for fast lookups
long_cache_keyFixedString(64)Hex-encoded 256-bit key for full cache validation
timestampDateTimeWhen this cache entry was created, defaults to now()
outputStringThe cached model output
raw_requestStringRaw request that was sent to the model provider
raw_responseStringRaw response received from the model provider
is_deletedBoolSoft deletion flag, defaults to false
input_tokensNullable(UInt32)Cached input token count
output_tokensNullable(UInt32)Cached output token count
finish_reasonNullable(Enum(‘stop’, ‘length’, ‘tool_call’, ‘content_filter’, ‘unknown’, ‘stop_sequence’))Cached finish reason
The table uses the ReplacingMergeTree engine with timestamp and is_deleted columns for deduplication. It is partitioned by month and ordered by the composite cache key (short_cache_key, long_cache_key). The short_cache_key serves as the primary key for performance, while a bloom filter index on long_cache_key helps optimize point queries.

ChatInferenceDatapoint

The ChatInferenceDatapoint table stores chat inference examples organized into datasets.
ColumnTypeNotes
dataset_nameLowCardinality(String)Name of the dataset this example belongs to
function_nameLowCardinality(String)Name of the function this example is for
idUUIDMust be a UUIDv7, often the inference ID if generated from an inference
episode_idUUIDMust be a UUIDv7
inputString (JSON)input field in the /inference request body
outputNullable(String) (JSON)Array of content blocks
tool_paramsString (JSON)Object with any tool parameters (e.g. tool_choice, tools_available) used for the inference
tagsMap(String, String)User-assigned tags (e.g. {"user_id": "123"})
auxiliaryStringAdditional JSON data (unstructured)
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this dataset entry was updated, defaults to now64()
staled_atNullable(DateTime64)Timestamp when the datapoint was staled (edited or deleted)
source_inference_idNullable(UUID)Source inference ID if generated from an inference
is_customBoolWhether the datapoint has been customized beyond the original output, defaults to false
nameNullable(String)Optional human-readable label for the datapoint
dynamic_toolsArray(String)Dynamic tool definitions
dynamic_provider_toolsArray(String)Dynamic provider tool definitions
allowed_toolsNullable(String)Allowed tools specification
tool_choiceNullable(String)Tool choice specification
parallel_tool_callsNullable(Bool)Whether parallel tool calls are allowed
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine with updated_at and is_deleted columns for deduplication. It is ordered by dataset_name, function_name, and id to optimize queries filtering by dataset and function.

JsonInferenceDatapoint

The JsonInferenceDatapoint table stores JSON inference examples organized into datasets.
ColumnTypeNotes
dataset_nameLowCardinality(String)Name of the dataset this example belongs to
function_nameLowCardinality(String)Name of the function this example is for
idUUIDMust be a UUIDv7, often the inference ID if generated from an inference
episode_idUUIDMust be a UUIDv7
inputString (JSON)input field in the /inference request body
outputString (JSON)Object with parsed and raw fields
output_schemaString (JSON)Schema that the output must conform to
tagsMap(String, String)User-assigned tags (e.g. {"user_id": "123"})
auxiliaryStringAdditional JSON data (unstructured)
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this dataset entry was updated, defaults to now64()
staled_atNullable(DateTime64)Timestamp when the datapoint was staled (edited or deleted)
source_inference_idNullable(UUID)Source inference ID if generated from an inference
is_customBoolWhether the datapoint has been customized beyond the original output, defaults to false
nameNullable(String)Optional human-readable label for the datapoint
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine with updated_at and is_deleted columns for deduplication. It is ordered by dataset_name, function_name, and id to optimize queries filtering by dataset and function.

BatchRequest

The BatchRequest table stores information about batch requests made to model providers. We update it every time a particular batch_id is created or polled.
ColumnTypeNotes
batch_idUUIDMust be a UUIDv7
idUUIDMust be a UUIDv7
batch_paramsStringParameters used for the batch request
model_nameStringName of the model used
model_provider_nameStringName of the model provider
statusStringOne of: ‘pending’, ‘completed’, ‘failed’
errorsArray(String)Array of error messages if status is ‘failed’
timestampDateTimeMaterialized from id (using UUIDv7ToDateTime function)
raw_requestStringRaw request sent to the model provider
raw_responseStringRaw response received from the model provider
function_nameStringName of the function being called
variant_nameStringName of the function variant
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

BatchModelInference

The BatchModelInference table stores information about inferences made as part of a batch request. Once the request succeeds, we use this information to populate the ChatInference, JsonInference, and ModelInference tables.
ColumnTypeNotes
inference_idUUIDMust be a UUIDv7
batch_idUUIDMust be a UUIDv7
function_nameStringName of the function being called
variant_nameStringName of the function variant
episode_idUUIDMust be a UUIDv7
inputString (JSON)input field in the /inference request body
systemStringThe system input to the model
input_messagesArray(RequestMessage)The user and assistant messages input to the model
tool_paramsString (JSON)Object with any tool parameters (e.g. tool_choice, tools_available) used for the inference
inference_paramsString (JSON)Object with any inference parameters per variant type (e.g. {"chat_completion": {"temperature": 0.5}})
raw_requestStringRaw request sent to the model provider
model_nameStringName of the model used
model_provider_nameStringName of the model provider
output_schemaStringOptional schema for JSON outputs
tagsMap(String, String)User-assigned tags (e.g. {"author": "Alice"})
timestampDateTimeMaterialized from inference_id (using UUIDv7ToDateTime function)
dynamic_toolsArray(String)Dynamic tool definitions provided at inference time
dynamic_provider_toolsArray(String)Dynamic provider tool definitions provided at inference time
allowed_toolsNullable(String)Allowed tools specification
tool_choiceNullable(String)Tool choice specification
parallel_tool_callsNullable(Bool)Whether parallel tool calls are allowed
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

ConfigSnapshot

The ConfigSnapshot table stores snapshots of the TensorZero configuration for data provenance. Each time the gateway starts with a new configuration, a snapshot is stored.
ColumnTypeNotes
configStringSerialized configuration
extra_templatesMap(String, String)Additional template files
hashUInt256Hash of the configuration
tensorzero_versionStringVersion of TensorZero that wrote the snapshot
created_atDateTime64When this snapshot was first created
last_usedDateTime64When this snapshot was last used
tagsMap(String, String)Tags associated with the snapshot
The table uses the ReplacingMergeTree engine ordered by hash.

DynamicEvaluationRun

The DynamicEvaluationRun table stores information about workflow evaluation runs. A workflow evaluation run is a related set of episodes with a common set of variant pins and experiment tags. Note: This table uses the “DynamicEvaluation” prefix for historical reasons. This feature is externally called “Workflow Evaluations”.
ColumnTypeNotes
run_id_uintUInt128UUID encoded as a UInt128
variant_pinsMap(String, String)Variant pins for this run
tagsMap(String, String)User-assigned tags
project_nameNullable(String)Name of the project this run belongs to
run_display_nameNullable(String)Human-readable display name for the run
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this entry was last updated, defaults to now()
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine ordered by run_id_uint.

DynamicEvaluationRunEpisode

The DynamicEvaluationRunEpisode table stores information about individual episodes within a workflow evaluation run. Note: This table uses the “DynamicEvaluation” prefix for historical reasons. This feature is externally called “Workflow Evaluations”.
ColumnTypeNotes
run_idUUIDReferences the parent run
episode_id_uintUInt128UUID encoded as a UInt128
variant_pinsMap(String, String)Variant pins (duplicated from run for efficiency)
datapoint_nameNullable(String)Name of the task/datapoint being evaluated
tagsMap(String, String)User-assigned tags
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this entry was last updated, defaults to now()
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine ordered by episode_id_uint.

StaticEvaluationHumanFeedback

The StaticEvaluationHumanFeedback table stores human feedback for inference evaluations in an easy-to-reference format. Note: This table uses the “StaticEvaluation” prefix for historical reasons. This feature is externally called “Inference Evaluations”.
ColumnTypeNotes
metric_nameStringName of the metric
datapoint_idUUIDID of the datapoint being evaluated
outputStringThe inference output associated with the feedback
valueStringJSON-encoded value of the feedback
feedback_idUUIDID of the feedback entry
evaluator_inference_idUUIDID of the evaluator inference that generated the feedback
timestampDateTimeMaterialized from feedback_id (using UUIDv7ToDateTime function)
The table uses the MergeTree engine ordered by (metric_name, datapoint_id, output).
Materialized views in columnar databases like ClickHouse pre-compute alternative indexings of data, dramatically improving query performance compared to computing results on-the-fly. In TensorZero’s case, we store denormalized data about inferences and feedback in the materialized views below to support efficient queries for common downstream use cases.

FeedbackTag

The FeedbackTag table stores tags associated with various feedback types. Tags are used to categorize and add metadata to feedback entries, allowing for user-defined filtering later on. Data is inserted into this table by materialized views reading from the BooleanMetricFeedback, CommentFeedback, DemonstrationFeedback, and FloatMetricFeedback tables.
ColumnTypeNotes
metric_nameStringName of the metric the tag is associated with.
keyStringKey of the tag.
valueStringValue of the tag.
feedback_idUUIDUUID referencing the related feedback entry (e.g., BooleanMetricFeedback.id).
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

InferenceById

The InferenceById table is a materialized view that combines data from ChatInference and JSONInference. Notably, it indexes the table by id_uint for fast lookup by the gateway to validate feedback requests. We store id_uint as a UInt128 so that they are sorted in the natural order by time as ClickHouse sorts UUIDs in little-endian order.
ColumnTypeNotes
id_uintUInt128Integer representation of UUIDv7 for sorting order
function_nameString
variant_nameString
episode_idUUIDMust be a UUIDv7
function_typeStringEither 'chat' or 'json'
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

InferenceByEpisodeId

The InferenceByEpisodeId table is a materialized view that indexes inferences by their episode ID, enabling efficient lookup of all inferences within an episode. We store episode_id_uint as a UInt128 so that they are sorted in the natural order by time as ClickHouse sorts UUIDs in little-endian order.
ColumnTypeNotes
episode_id_uintUInt128Integer representation of UUIDv7 for sorting order
id_uintUInt128Integer representation of UUIDv7 for sorting order
function_nameStringName of the function being called
variant_nameStringName of the function variant
function_typeEnum(‘chat’, ‘json’)Type of function (chat or json)
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

InferenceTag

The InferenceTag table stores tags associated with inferences. Tags are used to categorize and add metadata to inferences, allowing for user-defined filtering later on. Data is inserted into this table by materialized views reading from the ChatInference and JsonInference tables.
ColumnTypeNotes
function_nameStringName of the function the tag is associated with.
keyStringKey of the tag.
valueStringValue of the tag.
inference_idUUIDUUID referencing the related inference (e.g., ChatInference.id).
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

BatchIdByInferenceId

The BatchIdByInferenceId table maps inference IDs to batch IDs, allowing for efficient lookup of which batch an inference belongs to.
ColumnTypeNotes
inference_idUUIDMust be a UUIDv7
batch_idUUIDMust be a UUIDv7

TagInference

The TagInference table stores denormalized tag data for efficient queries by tag key and value. Data is inserted by materialized views reading from the ChatInference and JsonInference tables.
ColumnTypeNotes
keyStringTag key
valueStringTag value
function_nameStringName of the function
variant_nameStringName of the variant
episode_idUUIDEpisode ID
inference_idUUIDInference ID
function_typeEnum(‘chat’, ‘json’)Type of function (chat or json)
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this entry was last updated, defaults to now64()
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine ordered by (key, value, inference_id).

BooleanMetricFeedbackByTargetId

The BooleanMetricFeedbackByTargetId table indexes boolean metric feedback by target ID, enabling efficient lookup of feedback for a specific target.
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7
metric_nameStringName of the metric (stored as LowCardinality)
valueBoolThe boolean feedback value
tagsMap(String, String)Key-value pairs of tags associated with the feedback
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

CommentFeedbackByTargetId

The CommentFeedbackByTargetId table stores text feedback associated with inferences or episodes, enabling efficient lookup of comments by their target ID.
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7
target_typeEnum(‘inference’, ‘episode’)Type of entity this feedback is for
valueStringThe text feedback content
tagsMap(String, String)Key-value pairs of tags associated with the feedback
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

DemonstrationFeedbackByInferenceId

The DemonstrationFeedbackByInferenceId table stores demonstration feedback associated with inferences, enabling efficient lookup of demonstrations by inference ID.
ColumnTypeNotes
idUUIDMust be a UUIDv7
inference_idUUIDMust be a UUIDv7
valueStringThe demonstration feedback content
tagsMap(String, String)Key-value pairs of tags associated with the feedback
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

FloatMetricFeedbackByTargetId

The FloatMetricFeedbackByTargetId table indexes float metric feedback by target ID, enabling efficient lookup of feedback for a specific target.
ColumnTypeNotes
idUUIDMust be a UUIDv7
target_idUUIDMust be a UUIDv7
metric_nameStringName of the metric (stored as LowCardinality)
valueFloat32The float feedback value
tagsMap(String, String)Key-value pairs of tags associated with the feedback
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance

EpisodeById

The EpisodeById table aggregates episode data for efficient lookup by episode ID. Data is inserted by materialized views reading from the ChatInference and JsonInference tables.
ColumnTypeNotes
episode_id_uintUInt128Integer representation of UUIDv7 for sorting order
countSimpleAggregateFunction(sum, UInt64)Number of inferences in the episode
inference_idsAggregateFunction(groupArray, UUID)Array of inference IDs in the episode
min_inference_id_uintSimpleAggregateFunction(min, UInt128)Earliest inference ID in the episode
max_inference_id_uintSimpleAggregateFunction(max, UInt128)Latest inference ID in the episode
The table uses the AggregatingMergeTree engine ordered by episode_id_uint.

DynamicEvaluationRunEpisodeByRunId

The DynamicEvaluationRunEpisodeByRunId table indexes workflow evaluation run episodes by run ID for efficient lookup.Note: This table uses the “DynamicEvaluation” prefix for historical reasons. This feature is externally called “Workflow Evaluations”.
ColumnTypeNotes
run_id_uintUInt128UUID encoded as a UInt128
episode_id_uintUInt128UUID encoded as a UInt128
variant_pinsMap(String, String)Variant pins for this episode
tagsMap(String, String)User-assigned tags
datapoint_nameNullable(String)Name of the task/datapoint being evaluated
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this entry was last updated, defaults to now()
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine ordered by (run_id_uint, episode_id_uint).

DynamicEvaluationRunByProjectName

The DynamicEvaluationRunByProjectName table indexes workflow evaluation runs by project name for efficient lookup.Note: This table uses the “DynamicEvaluation” prefix for historical reasons. This feature is externally called “Workflow Evaluations”.
ColumnTypeNotes
run_id_uintUInt128UUID encoded as a UInt128
variant_pinsMap(String, String)Variant pins for this run
tagsMap(String, String)User-assigned tags
project_nameStringName of the project
run_display_nameNullable(String)Human-readable display name for the run
is_deletedBoolSoft deletion flag, defaults to false
updated_atDateTime64When this entry was last updated, defaults to now()
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the ReplacingMergeTree engine ordered by (project_name, run_id_uint).

FloatMetricFeedbackByVariant

The FloatMetricFeedbackByVariant table denormalizes float metric feedback by joining with inference data to associate feedback with specific function variants.
ColumnTypeNotes
function_nameStringName of the function
variant_nameStringName of the variant
metric_nameStringName of the metric
id_uintUInt128Feedback ID encoded as a UInt128
target_id_uintUInt128Target ID encoded as a UInt128
valueFloat32The float feedback value
feedback_tagsMap(String, String)Tags from the feedback entry
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the MergeTree engine ordered by (function_name, metric_name, variant_name, id_uint).

BooleanMetricFeedbackByVariant

The BooleanMetricFeedbackByVariant table denormalizes boolean metric feedback by joining with inference data to associate feedback with specific function variants.
ColumnTypeNotes
function_nameStringName of the function
variant_nameStringName of the variant
metric_nameStringName of the metric
id_uintUInt128Feedback ID encoded as a UInt128
target_id_uintUInt128Target ID encoded as a UInt128
valueBoolThe boolean feedback value
feedback_tagsMap(String, String)Tags from the feedback entry
snapshot_hashNullable(UInt256)Configuration snapshot hash for data provenance
The table uses the MergeTree engine ordered by (function_name, metric_name, variant_name, id_uint).

FeedbackByVariantStatistics

The FeedbackByVariantStatistics table stores pre-aggregated summary statistics about feedback by function, variant, metric, and time.
ColumnTypeNotes
function_nameStringName of the function
variant_nameStringName of the variant
metric_nameStringName of the metric
minuteDateTimeStart of the minute bucket
feedback_meanAggregateFunction(avg, Float32)Running mean of feedback values
feedback_varianceAggregateFunction(varSampStable, Float32)Running variance of feedback values
countSimpleAggregateFunction(sum, UInt64)Number of feedback entries
The table uses the AggregatingMergeTree engine ordered by (function_name, metric_name, variant_name, minute).

CumulativeUsage

The CumulativeUsage table stores cumulative token usage counts.
ColumnTypeNotes
typeStringType of count: 'input_tokens', 'output_tokens', or 'model_inferences'
countUInt64Cumulative count
The table uses the SummingMergeTree engine ordered by type.

ModelProviderStatistics

The ModelProviderStatistics table stores pre-aggregated performance statistics for model providers by minute.
ColumnTypeNotes
model_nameStringName of the model
model_provider_nameStringName of the model provider
minuteDateTimeStart of the minute bucket
response_time_ms_quantilesAggregateFunction(quantilesTDigest, Nullable(UInt32))Response time distribution
ttft_ms_quantilesAggregateFunction(quantilesTDigest, Nullable(UInt32))Time-to-first-token distribution
total_input_tokensAggregateFunction(sum, Nullable(UInt32))Total input tokens
total_output_tokensAggregateFunction(sum, Nullable(UInt32))Total output tokens
countAggregateFunction(count, UInt32)Number of inferences
The table uses the AggregatingMergeTree engine ordered by (model_name, model_provider_name, minute).