e04ed9c211
CF: Deploy Dev Docs / deploy (push) Has been cancelled
Sync Labels / build (push) Has been cancelled
tests / unit tests (macos-latest) (push) Has been cancelled
tests / unit tests (windows-latest) (push) Has been cancelled
tests / unit tests (ubuntu-latest) (push) Has been cancelled
159 lines
4.6 KiB
Markdown
159 lines
4.6 KiB
Markdown
---
|
|
title: "clickhouse-sql"
|
|
type: docs
|
|
weight: 2
|
|
description: >
|
|
A "clickhouse-sql" tool executes SQL queries as prepared statements in ClickHouse.
|
|
---
|
|
|
|
## About
|
|
|
|
A `clickhouse-sql` tool executes SQL queries as prepared statements against a
|
|
ClickHouse database.
|
|
|
|
This tool supports both template parameters (for SQL statement customization)
|
|
and regular parameters (for prepared statement values), providing flexible
|
|
query execution capabilities.
|
|
|
|
## Compatible Sources
|
|
|
|
{{< compatible-sources >}}
|
|
|
|
## Example
|
|
|
|
```yaml
|
|
kind: tool
|
|
name: my_analytics_query
|
|
type: clickhouse-sql
|
|
source: my-clickhouse-instance
|
|
description: Get user analytics for a specific date range
|
|
statement: |
|
|
SELECT
|
|
user_id,
|
|
count(*) as event_count,
|
|
max(timestamp) as last_event
|
|
FROM events
|
|
WHERE date >= ? AND date <= ?
|
|
GROUP BY user_id
|
|
ORDER BY event_count DESC
|
|
LIMIT ?
|
|
parameters:
|
|
- name: start_date
|
|
description: Start date for the query (YYYY-MM-DD format)
|
|
- name: end_date
|
|
description: End date for the query (YYYY-MM-DD format)
|
|
- name: limit
|
|
description: Maximum number of results to return
|
|
```
|
|
|
|
### Template Parameters Example
|
|
|
|
```yaml
|
|
kind: tool
|
|
name: flexible_table_query
|
|
type: clickhouse-sql
|
|
source: my-clickhouse-instance
|
|
description: Query any table with flexible columns
|
|
statement: |
|
|
SELECT {{columns}}
|
|
FROM {{table_name}}
|
|
WHERE created_date >= ?
|
|
LIMIT ?
|
|
templateParameters:
|
|
- name: columns
|
|
description: Comma-separated list of columns to select
|
|
- name: table_name
|
|
description: Name of the table to query
|
|
parameters:
|
|
- name: start_date
|
|
description: Start date filter
|
|
- name: limit
|
|
description: Maximum number of results
|
|
```
|
|
|
|
### Vector Search Example
|
|
|
|
The `clickhouse-sql` tool can transparently embed string parameters into vectors
|
|
via Toolbox's native [embedding models](../../../documentation/configuration/embedding-models/_index.md).
|
|
The vector is bound to the prepared-statement placeholder as a native
|
|
`Array(Float32)`, so you can write SQL against ClickHouse's vector functions
|
|
(e.g. `cosineDistance`, `L2Distance`) without doing any string parsing yourself.
|
|
|
|
Assume the following destination table:
|
|
|
|
```sql
|
|
CREATE TABLE documents (
|
|
id UUID DEFAULT generateUUIDv4(),
|
|
content String,
|
|
embedding Array(Float32)
|
|
) ENGINE = MergeTree ORDER BY tuple();
|
|
```
|
|
|
|
Define the embedding model:
|
|
|
|
```yaml
|
|
embeddingModels:
|
|
gemini-model:
|
|
kind: gemini
|
|
model: gemini-embedding-001
|
|
dimension: 768
|
|
```
|
|
|
|
Define an ingestion tool that embeds `content` before insert by mirroring it
|
|
into a second parameter (`text_to_embed`) that carries the `embeddedBy` hint:
|
|
|
|
```yaml
|
|
kind: tool
|
|
name: insert_doc
|
|
type: clickhouse-sql
|
|
source: my-clickhouse-instance
|
|
description: Indexes a new document and its vector embedding.
|
|
statement: |
|
|
INSERT INTO documents (content, embedding) VALUES (?, ?)
|
|
parameters:
|
|
- name: content
|
|
type: string
|
|
description: The text content to store.
|
|
- name: text_to_embed
|
|
type: string
|
|
description: The text content used to generate the vector.
|
|
valueFromParam: content
|
|
embeddedBy: gemini-model
|
|
```
|
|
|
|
Define a search tool that embeds the LLM-supplied `query` and ranks rows by
|
|
cosine distance:
|
|
|
|
```yaml
|
|
kind: tool
|
|
name: search_docs
|
|
type: clickhouse-sql
|
|
source: my-clickhouse-instance
|
|
description: Finds the most semantically similar document to a query.
|
|
statement: |
|
|
SELECT content, cosineDistance(embedding, ?) AS distance
|
|
FROM documents
|
|
ORDER BY distance ASC
|
|
LIMIT 1
|
|
parameters:
|
|
- name: query
|
|
type: string
|
|
description: The search query.
|
|
embeddedBy: gemini-model
|
|
```
|
|
|
|
Only `string`-typed parameters may declare `embeddedBy`. The embedding model
|
|
must be defined under the top-level `embeddingModels:` key of the same
|
|
configuration file.
|
|
|
|
## Reference
|
|
|
|
| **field** | **type** | **required** | **description** |
|
|
|--------------------|:------------------:|:------------:|-------------------------------------------------------|
|
|
| type | string | true | Must be "clickhouse-sql". |
|
|
| source | string | true | Name of the ClickHouse source to execute SQL against. |
|
|
| description | string | true | Description of the tool that is passed to the LLM. |
|
|
| statement | string | true | The SQL statement template to execute. |
|
|
| parameters | array of Parameter | false | Parameters for prepared statement values. |
|
|
| templateParameters | array of Parameter | false | Parameters for SQL statement template customization. |
|