/byted-bytehouse-multimodal-search
ByteHouse 多模态检索 Skill,支持文本、图片、视频的向量化存储与多模态混合检索(向量检索、以文搜图、以图搜文、混合关键词 + 向量检索)。当用户提到 "ByteHouse 向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜图"、"文搜视频"、"多模态知识库"、"HNSW / 向量索引" 等诉求时使用本 Skill。
$ npx -y skills add bytedance/agentkit-samples --skill byted-bytehouse-multimodal-search --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/byted-bytehouse-multimodal-search
Context preview
The summary Claude sees to decide when to auto-load this skill.
ByteHouse 多模态检索 Skill,支持文本、图片、视频的向量化存储与多模态混合检索(向量检索、以文搜图、以图搜文、混合关键词 + 向量检索)。当用户提到 "ByteHouse 向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜图"、"文搜视频"、"多模态知识库"、"HNSW / 向量索引" 等诉求时使用本 Skill。
SKILL.md
byted-bytehouse-multimodal-search.SKILL.mdname: byted-bytehouse-multimodal-search
description: ByteHouse 多模态检索 Skill,支持文本、图片、视频的向量化存储与多模态混合检索(向量检索、以文搜图、以图搜文、混合关键词 + 向量检索)。当用户提到 "ByteHouse 向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜图"、"文搜视频"、"多模态知识库"、"HNSW / 向量索引" 等诉求时使用本 Skill。
version: 1.0.1
ByteHouse 多模态检索 Skill
描述
本 Skill 基于 ByteHouse 的向量检索能力和火山引擎方舟多模态向量化模型(默认 `doubao-embedding-vision`),提供从**向量化 → 建表 → 写入 → 检索**的一整套多模态检索参考实现。核心能力:
1. **多模态向量化**:文本 / 图片 / 视频 → 统一维度向量。 2. **向量表创建**:支持 HNSW、IVF_FLAT、IVF_PQ 等索引,可选启用全文倒排索引。 3. **文档写入**:单条 / 批量插入,附带 `content_type`、`title`、`metadata`。 4. **检索能力**:向量检索、混合检索(向量 + 关键词)、以文搜图、以图搜图 / 视频。
**当以下情况时使用此 Skill:**
1. 用户希望在 ByteHouse 中搭建多模态向量检索服务。 2. 用户需要对已有多模态数据(文本、图片、视频)进行向量化后写入 ByteHouse。 3. 用户提到 "向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜视频" 等关键词。
前置条件
- Python 3.8+
- Python 依赖:`clickhouse-connect`、`clickhouse-driver`(TCP 场景)、`volcengine-python-sdk[ark]`、`numpy`
pip install clickhouse-connect clickhouse-driver "volcengine-python-sdk[ark]" numpy
- `jq`(`export_config.sh` 依赖,解析 JSON 配置。安装方式:`brew install jq` 或 `sudo apt install jq`)
- 有效的 ByteHouse 连接信息与方舟 API Key(保存于 `~/.bytehouse_config.json`)
📁 文件说明
- **SKILL.md** — 本文件,技能主文档。
- **scripts/embedding.py** — 多模态向量化模块(`MultimodalEmbedding`)。
- **scripts/search_client.py** — ByteHouse 多模态检索客户端(`ByteHouseMultimodalSearch`)。
- **scripts/examples.py** — 常见调用示例(初始化、建表、写入、检索)。
- **scripts/__init__.py** — Python 包入口,暴露 `MultimodalEmbedding` 与 `ByteHouseMultimodalSearch`。
- **scripts/export_config.sh** — 从 `~/.bytehouse_config.json` 加载配置到环境变量(依赖 `jq`)。
🧭 智能体使用指引
1. **确认配置**:`source scripts/export_config.sh`,让 `BYTEHOUSE_*`、`BH_ARK_*` 等环境变量就绪。 2. **确认场景**:向用户澄清是要 "建表 + 写入" 还是 "只做检索",以及数据模态(纯文本 / 文本 + 图片 / 视频等)。 3. **选择索引策略**:
- 数据量 < 100 万:`HNSW` + `COSINE`(默认)。
- 数据量较大或希望更省内存:`HNSW_SQ` / `IVF_FLAT` / `IVF_PQ`。
4. **建表 + 写入**:调用 `ByteHouseMultimodalSearch.create_multimodal_table(...)`、`insert_document(...)` 或 `batch_insert(...)`。 5. **检索**:优先使用 `vector_search(...)` 或 `hybrid_search(...)`,返回结果会自动过滤掉零向量、异常数据。 6. **安全提示**:`BH_ARK_API_KEY`、`BYTEHOUSE_PASSWORD` 等凭据只写入 `~/.bytehouse_config.json`,不要打印到日志或消息里。
配置说明
配置保存在 `~/.bytehouse_config.json`。如果文件存在且非空,直接使用;否则,让用户提供 ByteHouse 连接信息与方舟 API Key(可以把 [ByteHouse 连接信息获取指引](https://www.volcengine.com/docs/6517/1121919?lang=zh) 一并发给用户),拿到后写入 JSON 文件,避免重复询问。当用户切换 ByteHouse 集群或方舟账号时,一并更新该文件。
{
"BYTEHOUSE_HOST": "<ByteHouse-host>",
"BYTEHOUSE_PORT": "8123",
"BYTEHOUSE_USER": "bytehouse",
"BYTEHOUSE_PASSWORD": "<ByteHouse-password>",
"BYTEHOUSE_DATABASE": "default",
"BH_ARK_API_KEY": "<火山引擎方舟 API 密钥>",
"BH_ARK_BASE_URL": "https://ark.cn-beijing.volces.com/api/v3",
"BH_EMBEDDING_MODEL": "doubao-embedding-vision-251215",
"EMBEDDING_DIMENSIONS": "2048"
}- `BYTEHOUSE_HOST`(主机地址)与 `BYTEHOUSE_PASSWORD`(密码)**必须由用户提供**。
- 其它字段建议保留默认值。
- **运行前必须**通过 `source scripts/export_config.sh` 把配置导出到环境变量:`search_client.py` 与 `embedding.py` 只从环境变量读取配置。
source scripts/export_config.sh
🚀 快速开始
1. 初始化客户端
import sys, os
# 把 scripts/ 目录加入 sys.path
SKILL_SCRIPTS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scripts")
sys.path.insert(0, SKILL_SCRIPTS_DIR)
from search_client import ByteHouseMultimodalSearch
search = ByteHouseMultimodalSearch(connection_type="http")
2. 创建多模态检索表
search.create_multimodal_table(
table_name="multimodal_index",
enable_text_search=True,
index_type="HNSW",
metric="COSINE",
)3. 写入数据
# 文本
search.insert_document(
"multimodal_index",
doc_id=1,
content_type="text",
content="ByteHouse 是火山引擎推出的云原生数据仓库",
title="ByteHouse 介绍",
metadata={"category": "文档"},
)
# 图片(自动生成向量)
search.insert_document(
"multimodal_index",
doc_id=2,
content_type="image",
content="https://example.com/image.jpg",
title="示例图片",
)4. 向量检索
# 文本查询 → 向量检索
query_embedding = search.embedding.encode_text("云原生数据仓库")
results = search.vector_search(
"multimodal_index",
query_embedding=query_embedding,
top_k=10,
)
# 混合检索(关键词 + 向量)
results = search.hybrid_search(
"multimodal_index",
query_text="云原生数据仓库",
top_k=10,
)更多示例参见 [`scripts/examples.py`](scripts/examples.py)。
支持的索引类型
| 索引类型 | 说明 | 参数 | |----------|------|------| | HNSW | 高性能通用索引 | M, EF_CONSTRUCTION | | HNSW_SQ | HNSW 标量量化,节省内存 | M, EF_CONSTRUCTION | | IVF_FLAT | 倒排文件索引 | dim, metric | | IVF_PQ | 乘积量化 | dim, metric | | IVF_PQ_FS | PQ 快速搜索 | dim, metric |
支持的向量化输入
- **文本**:任意字符串。
- **图片**:URL 或 base64 编码。
- **视频**:URL 或 base64 编码(帧采样 + 向量化)。
失败兜底建议
| 现象 | 处理方式 | |------|----------| | `ModuleNotFoundError: volcenginesdkarkruntime` | 让用户安装 `pip install "volcengine-python-sdk[ark]"`。 | | `BH_ARK_API_KEY` 未设置 | 引导用户在方舟控制台申请 API Key 并写入 `~/.bytehouse_config.json`。 | | `BYTEHOUSE_HOST` / `BYTEHOUSE_PASSWORD` 未设置 | 引导用户提供连接信息,写入 `~/.bytehouse_config.json` 后 `source scripts/export_config.sh`。 | | 返回结果为空向量 / 全 0 向量 | 客户端已经过滤零向量;若仍频繁出现,检查向量化输入格式(URL 是否可访问、图片是否损坏)。 | | 建表报错 "index type xxx not supported" | 让用户确认集群版本,或改用 `HNSW` 兜底。 |
参考文档
- [ByteHouse 向量检索 SQL 文档](https://www.volcengine.com/docs/6464/1208707)
- [火山引擎方舟多模态向量化 API 文档](https://www.volcengine.com/docs/82379/1409291)
Read more
name: byted-bytehouse-multimodal-search description: ByteHouse 多模态检索 Skill,支持文本、图片、视频的向量化存储与多模态混合检索(向量检索、以文搜图、以图搜文、混合关键词 + 向量检索)。当用户提到 "ByteHouse 向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜图"、"文搜视频"、"多模态知识库"、"HNSW / 向量索引" 等诉求时使用本 Skill。 version: 1.0.1
ByteHouse 多模态检索 Skill
描述
本 Skill 基于 ByteHouse 的向量检索能力和火山引擎方舟多模态向量化模型(默认 `doubao-embedding-vision`),提供从**向量化 → 建表 → 写入 → 检索**的一整套多模态检索参考实现。核心能力:
1. **多模态向量化**:文本 / 图片 / 视频 → 统一维度向量。 2. **向量表创建**:支持 HNSW、IVF_FLAT、IVF_PQ 等索引,可选启用全文倒排索引。 3. **文档写入**:单条 / 批量插入,附带 `content_type`、`title`、`metadata`。 4. **检索能力**:向量检索、混合检索(向量 + 关键词)、以文搜图、以图搜图 / 视频。
**当以下情况时使用此 Skill:**
1. 用户希望在 ByteHouse 中搭建多模态向量检索服务。 2. 用户需要对已有多模态数据(文本、图片、视频)进行向量化后写入 ByteHouse。 3. 用户提到 "向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜视频" 等关键词。
前置条件
- Python 3.8+
- Python 依赖:`clickhouse-connect`、`clickhouse-driver`(TCP 场景)、`volcengine-python-sdk[ark]`、`numpy`
pip install clickhouse-connect clickhouse-driver "volcengine-python-sdk[ark]" numpy
- `jq`(`export_config.sh` 依赖,解析 JSON 配置。安装方式:`brew install jq` 或 `sudo apt install jq`)
- 有效的 ByteHouse 连接信息与方舟 API Key(保存于 `~/.bytehouse_config.json`)
📁 文件说明
- **SKILL.md** — 本文件,技能主文档。
- **scripts/embedding.py** — 多模态向量化模块(`MultimodalEmbedding`)。
- **scripts/search_client.py** — ByteHouse 多模态检索客户端(`ByteHouseMultimodalSearch`)。
- **scripts/examples.py** — 常见调用示例(初始化、建表、写入、检索)。
- **scripts/__init__.py** — Python 包入口,暴露 `MultimodalEmbedding` 与 `ByteHouseMultimodalSearch`。
- **scripts/export_config.sh** — 从 `~/.bytehouse_config.json` 加载配置到环境变量(依赖 `jq`)。
🧭 智能体使用指引
1. **确认配置**:`source scripts/export_config.sh`,让 `BYTEHOUSE_*`、`BH_ARK_*` 等环境变量就绪。 2. **确认场景**:向用户澄清是要 "建表 + 写入" 还是 "只做检索",以及数据模态(纯文本 / 文本 + 图片 / 视频等)。 3. **选择索引策略**:
- 数据量 < 100 万:`HNSW` + `COSINE`(默认)。
- 数据量较大或希望更省内存:`HNSW_SQ` / `IVF_FLAT` / `IVF_PQ`。
4. **建表 + 写入**:调用 `ByteHouseMultimodalSearch.create_multimodal_table(...)`、`insert_document(...)` 或 `batch_insert(...)`。 5. **检索**:优先使用 `vector_search(...)` 或 `hybrid_search(...)`,返回结果会自动过滤掉零向量、异常数据。 6. **安全提示**:`BH_ARK_API_KEY`、`BYTEHOUSE_PASSWORD` 等凭据只写入 `~/.bytehouse_config.json`,不要打印到日志或消息里。
配置说明
配置保存在 `~/.bytehouse_config.json`。如果文件存在且非空,直接使用;否则,让用户提供 ByteHouse 连接信息与方舟 API Key(可以把 [ByteHouse 连接信息获取指引](https://www.volcengine.com/docs/6517/1121919?lang=zh) 一并发给用户),拿到后写入 JSON 文件,避免重复询问。当用户切换 ByteHouse 集群或方舟账号时,一并更新该文件。
{
"BYTEHOUSE_HOST": "<ByteHouse-host>",
"BYTEHOUSE_PORT": "8123",
"BYTEHOUSE_USER": "bytehouse",
"BYTEHOUSE_PASSWORD": "<ByteHouse-password>",
"BYTEHOUSE_DATABASE": "default",
"BH_ARK_API_KEY": "<火山引擎方舟 API 密钥>",
"BH_ARK_BASE_URL": "https://ark.cn-beijing.volces.com/api/v3",
"BH_EMBEDDING_MODEL": "doubao-embedding-vision-251215",
"EMBEDDING_DIMENSIONS": "2048"
}- `BYTEHOUSE_HOST`(主机地址)与 `BYTEHOUSE_PASSWORD`(密码)**必须由用户提供**。
- 其它字段建议保留默认值。
- **运行前必须**通过 `source scripts/export_config.sh` 把配置导出到环境变量:`search_client.py` 与 `embedding.py` 只从环境变量读取配置。
source scripts/export_config.sh
🚀 快速开始
1. 初始化客户端
import sys, os # 把 scripts/ 目录加入 sys.path SKILL_SCRIPTS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scripts") sys.path.insert(0, SKILL_SCRIPTS_DIR) from search_client import ByteHouseMultimodalSearch search = ByteHouseMultimodalSearch(connection_type="http")
2. 创建多模态检索表
search.create_multimodal_table(
table_name="multimodal_index",
enable_text_search=True,
index_type="HNSW",
metric="COSINE",
)3. 写入数据
# 文本
search.insert_document(
"multimodal_index",
doc_id=1,
content_type="text",
content="ByteHouse 是火山引擎推出的云原生数据仓库",
title="ByteHouse 介绍",
metadata={"category": "文档"},
)
# 图片(自动生成向量)
search.insert_document(
"multimodal_index",
doc_id=2,
content_type="image",
content="https://example.com/image.jpg",
title="示例图片",
)4. 向量检索
# 文本查询 → 向量检索
query_embedding = search.embedding.encode_text("云原生数据仓库")
results = search.vector_search(
"multimodal_index",
query_embedding=query_embedding,
top_k=10,
)
# 混合检索(关键词 + 向量)
results = search.hybrid_search(
"multimodal_index",
query_text="云原生数据仓库",
top_k=10,
)更多示例参见 [`scripts/examples.py`](scripts/examples.py)。
支持的索引类型
| 索引类型 | 说明 | 参数 | |----------|------|------| | HNSW | 高性能通用索引 | M, EF_CONSTRUCTION | | HNSW_SQ | HNSW 标量量化,节省内存 | M, EF_CONSTRUCTION | | IVF_FLAT | 倒排文件索引 | dim, metric | | IVF_PQ | 乘积量化 | dim, metric | | IVF_PQ_FS | PQ 快速搜索 | dim, metric |
支持的向量化输入
- **文本**:任意字符串。
- **图片**:URL 或 base64 编码。
- **视频**:URL 或 base64 编码(帧采样 + 向量化)。
失败兜底建议
| 现象 | 处理方式 | |------|----------| | `ModuleNotFoundError: volcenginesdkarkruntime` | 让用户安装 `pip install "volcengine-python-sdk[ark]"`。 | | `BH_ARK_API_KEY` 未设置 | 引导用户在方舟控制台申请 API Key 并写入 `~/.bytehouse_config.json`。 | | `BYTEHOUSE_HOST` / `BYTEHOUSE_PASSWORD` 未设置 | 引导用户提供连接信息,写入 `~/.bytehouse_config.json` 后 `source scripts/export_config.sh`。 | | 返回结果为空向量 / 全 0 向量 | 客户端已经过滤零向量;若仍频繁出现,检查向量化输入格式(URL 是否可访问、图片是否损坏)。 | | 建表报错 "index type xxx not supported" | 让用户确认集群版本,或改用 `HNSW` 兜底。 |
参考文档
- [ByteHouse 向量检索 SQL 文档](https://www.volcengine.com/docs/6464/1208707)
- [火山引擎方舟多模态向量化 API 文档](https://www.volcengine.com/docs/82379/1409291)
欢迎来到 AgentKit 代码工坊(Samples)仓库! AgentKit 是火山引擎推出的企业级 AI Agent 开发平台,为开发者提供完整的 Agent 构建、部署和运维解决方案。平台通过标准化的开发工具链和云原生基础设施,显著降低复杂智能体应用的开发部署门槛。 本代码库包含了一系列示例和教程,帮助您理解、实现和集成 AgentKit 的各项功能到您的应用中。
Other skills on agentkit-samples.
- /code-optimization
Optimize code performance through iterative improvements (max 2 rounds). Benchmark execution time and memory usage, compare against baseline implementations, and generate detailed optimization reports. Supports C++, Python, Java, Rust, and other languages.
Open skill - /image-video-gen
根据文字描述生成视频,一个生成图片和视频的工作流技能。依赖 skills: byted-web-search, image-generate, video-generate。注意:此 workflow 没有执行脚本,只是一个描述性的文档。
Open skill - /skills-management
Manage AgentKit skills, SkillHub/skillhub, skill centers, and skill spaces. Use this skill whenever the user has a management intent for AgentKit skills, skill中心, skill 空间, skill space, or skill hub, including listing, inspecting, downloading, fetching, uploading, publishing,
Open skill - /tos-file-access
Upload files or directories to TOS-compatible object storage for Volcano Engine or BytePlus and download files from URLs. Use this skill when (1) Upload Agent-generated files or directories for sharing, (2) Download files from URLs before Agent processing.
Open skill - /veadk-go-skills
根据用户的功能需求,完成与 VeADK-Go 相关的功能; 包括:直接根据需求生成 Agent;将Enio Agent转换为VeADK-Go Agent。
Open skill - /veadk-skills
根据用户的功能需求,完成与 VeADK 相关的功能。
Open skill

