Skill: volcengine-skills/byted-bytehouse-hybrid-search (version 1.0.0)

--- name: byted-bytehouse-hybrid-search description: ByteHouse 混合检索 Skill，支持全文检索 + 向量检索，结合 RRF 重排算法实现更精准的检索结果。当用户需要在ByteHouse数据库中进行全文检索 + 向量检索，结合 RRF 重排算法实现更精准的检索结果时，使用此Skill。 version: 1.0.0 author: ByteDance created_at: 2026-03-13 --- # ByteHouse 混合检索 Skill ## 🚀 快速开始 ### 环境准备 ```bash pip install clickhouse-connect volcengine-python-sdk[ark] numpy scipy ``` #### 环境变量配置 优先从环境变量读取配置，**禁止硬编码明文敏感信息**： ```bash # ByteHouse 配置 export BYTEHOUSE_HOST="<你的ByteHouse连接地址>" export BYTEHOUSE_PORT="<ByteHouse端口>" export BYTEHOUSE_USER="<ByteHouse用户名>" export BYTEHOUSE_PASSWORD="<ByteHouse密码>" export BYTEHOUSE_DATABASE="<默认数据库，可选，默认default>" export BYTEHOUSE_SECURE="<是否启用加密，可选，默认true>" # 火山引擎方舟 API 配置 export ARK_API_KEY="<火山引擎方舟API密钥>" export ARK_BASE_URL="https://ark.cn-beijing.volces.com/api/v3" export EMBEDDING_MODEL="doubao-embedding-vision-251215" # 文本向量化模型 export EMBEDDING_DIMENSIONS="1536" # 向量维度，可选，默认1536 ``` 如果环境变量未配置，会自动提示用户输入。 --- ## 📚 核心能力 ### 1. 文本向量化 基于豆包文本向量化模型生成文本向量，支持任意长度中文文本。 ### 2. 双索引构建 | 索引类型 | 说明 | 适用场景 | |----------|------|----------| | **全文倒排索引** | 基于BM25算法的全文检索，支持关键词匹配 | 精准关键词召回 | | **向量索引** | 基于HNSW的向量相似度检索，支持语义匹配 | 语义相似召回 | ### 3. 核心功能 | 功能 | 方法 | 说明 | |------|------|------| | 全文检索 | `fulltext_search()` | 基于BM25的全文检索，返回BM25分数 | | 向量检索 | `vector_search()` | 基于余弦相似度的向量检索，返回相似度分数 | | 混合检索+RRF重排 | `hybrid_search()` | 双路召回后使用RRF算法重排，返回最终结果 | | 自动生成向量 | `insert_document()`/`batch_insert_documents()` | 插入文档时自动生成向量并存储，无需手动处理 | | 单个文档向量更新 | `update_document_embedding()` | 为单个文档重新生成并更新向量 | | 批量补全缺失向量 | `batch_update_missing_embeddings()` | 自动扫描表中所有缺少向量的文档，批量生成并补全向量 | ### 4. RRF重排算法 Reciprocal Rank Fusion 算法，综合全文检索和向量检索的排名结果，公式： ``` score = Σ 1 / (k + rank) ``` 默认k=60，可自定义调整。 --- ## 📖 代码实现 完整示例代码实现位于 `scripts/` 目录： - [`scripts/embedding.py`](scripts/embedding.py) - 文本向量化模块 - [`scripts/hybrid_search_client.py`](scripts/hybrid_search_client.py) - ByteHouse 混合检索客户端 - [`scripts/examples.py`](scripts/examples.py) - 使用示例 ### 快速使用 ```python from scripts import ByteHouseHybridSearch # 初始化客户端 search = ByteHouseHybridSearch(connection_type="http") # 创建混合检索表（自动构建全文索引和向量索引） search.create_hybrid_table("my_hybrid_index") # 插入文档（自动生成向量 + 存储原始文本） search.insert_document("my_hybrid_index", doc_id=1, title="ByteHouse 混合检索", content="ByteHouse 支持全文检索和向量检索，可实现混合检索能力") # 混合检索（自动执行全文+向量检索，RRF重排返回结果） results = search.hybrid_search("my_hybrid_index", query="ByteHouse检索能力", top_k=10) ``` --- ## ⚙️ 最佳实践 ### 建表配置 ```sql CREATE TABLE {table_name} ( `doc_id` UInt64, `title` String, `content` String, `embedding` Array(Float32), -- 全文倒排索引（version=2支持BM25分数） INDEX content_idx content TYPE inverted('standard', '{"version":"v2"}') GRANULARITY 1, -- 向量索引（HNSW算法，余弦相似度） INDEX embedding_idx embedding TYPE HNSW_SQ('DIM={vec_dimensions}', 'metric=COSINE', 'M=32', 'EF_CONSTRUCTION=256') GRANULARITY 1 ) ENGINE = MergeTree() ORDER BY doc_id SETTINGS index_granularity = 1024, enable_vector_index_preload = 1 ``` ### RRF参数调整 - 当全文检索结果更重要时，可降低`rrf_k`值（推荐30-60） - 当向量检索结果更重要时，可提高`rrf_k`值（推荐60-100） ## 🔗 参考文档 - [ByteHouse 全文检索文档](https://www.volcengine.com/docs/6464/1208708) - [ByteHouse 向量检索文档](https://www.volcengine.com/docs/6464/1208707) - [RRF算法论文](https://plg.uwaterloo.ca/~gvcormac/cormackpapers/trec03cormack.pdf)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)