brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
byted-bytehouse-multimodal-searchByteHouse 多模态检索 Skill,支持文本、图片、视频的向量化存储与多模态混合检索(向量检索、以文搜图、以图搜文、混合关键词 + 向量检索)。当用户提到 "ByteHouse 向量检索"、"多模态检索"、"混合检索"、"以文搜图"、"以图搜图"、"文搜视频"、"多模态知识库"、"HNSW / 向量索引" 等诉求时使用本 Skill。
Independent GitHub snapshot · Automated classification · Original documentation governs
本 Skill 基于 ByteHouse 的向量检索能力和火山引擎方舟多模态向量化模型(默认 doubao-embedding-vision),提供从向量化 → 建表 → 写入 → 检索的一整套多模态检索参考实现。核心能力:
content_type、title、metadata。当以下情况时使用此 Skill:
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_config.json)MultimodalEmbedding)。ByteHouseMultimodalSearch)。MultimodalEmbedding 与 ByteHouseMultimodalSearch。~/.bytehouse_config.json 加载配置到环境变量(依赖 jq)。source scripts/export_config.sh,让 BYTEHOUSE_*、BH_ARK_* 等环境变量就绪。HNSW + COSINE(默认)。HNSW_SQ / IVF_FLAT / IVF_PQ。ByteHouseMultimodalSearch.create_multimodal_table(...)、insert_document(...) 或 batch_insert(...)。vector_search(...) 或 hybrid_search(...),返回结果会自动过滤掉零向量、异常数据。BH_ARK_API_KEY、BYTEHOUSE_PASSWORD 等凭据只写入 ~/.bytehouse_config.json,不要打印到日志或消息里。配置保存在 ~/.bytehouse_config.json。如果文件存在且非空,直接使用;否则,让用户提供 ByteHouse 连接信息与方舟 API Key(可以把 ByteHouse 连接信息获取指引 一并发给用户),拿到后写入 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
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")
search.create_multimodal_table(
table_name="multimodal_index",
enable_text_search=True,
index_type="HNSW",
metric="COSINE",
)
# 文本
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="示例图片",
)
# 文本查询 → 向量检索
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。
| 索引类型 | 说明 | 参数 |
|---|---|---|
| HNSW | 高性能通用索引 | M, EF_CONSTRUCTION |
| HNSW_SQ | HNSW 标量量化,节省内存 | M, EF_CONSTRUCTION |
| IVF_FLAT | 倒排文件索引 | dim, metric |
| IVF_PQ | 乘积量化 | dim, metric |
| IVF_PQ_FS | PQ 快速搜索 | dim, metric |
| 现象 | 处理方式 |
|---|---|
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 兜底。 |