使用 ByteHouse 向量检索功能时,ByteHouse 提供了一系列配置参数,帮助您提升查询精度,降低响应延迟。您可按需选择在 SQL 建表语句、config.xml 文件或 users.xml 文件中配置相关参数。
使用 SQL 语句建表时,可以通过配置 settings 参数来优化向量检索性能。建议配置如下:
CREATE TABLE test_ann ( id UInt64, embedding Array(Float32), INDEX vec_idx embedding TYPE HNSW('METRIC=COSINE, DIM=768') ) ENGINE = MergeTree ORDER BY id SETTINGS index_granularity = 128, -- 调小 Mark 大小 index_granularity_bytes = 0, -- 禁用 Adaptive Mark enable_vector_index_preload = 1, -- 启用索引预加载 merge_selector_config = '{"name": "dance", "max_parts_to_merge_base": 100, "min_parts_to_merge_base": 2, "min_parts_to_enable_multi_selection": 50, "max_total_rows_to_merge": 20000000, "max_parts_to_break": 10000, "enable_heuristic_to_align_parts": 0}' ;
参数说明
参数 | 作用 | 推荐值 |
---|---|---|
| 控制每个 Mark 包含的行数,调小可降低读放大,提升向量过滤精度。 |
|
| 禁用 Adaptive Mark,固定 Mark 大小,减少 Mark 定位计算开销。 |
|
| 数据写入后直接加载向量索引到内存,消除首次查询的加载延迟。 |
|
| 优化数据合并策略,控制分区数量和合并规模,减少查询时扫描的分区数。 | 见下方 merge_selector_config 参数详解 |
merge_selector_config 参数详解
子参数 | 作用 | 推荐值 |
---|---|---|
| 选择合并算法, |
|
| 单次合并的最大分区数,防止过度合并导致写入阻塞。 |
|
| 触发合并的最小分区数,避免小分区长期存在增加扫描开销。 |
|
| 单次合并的最大行数,避免构建过大的索引。 |
|
| 禁用启发式对齐,简化合并逻辑,减少合并耗时。 |
|
通过 users.xml
配置用户级参数,优化向量索引的构建效率和查询性能。修改配置参数的操作详情请参见修改配置参数。
# 基于实际导入速度与机器核数调整 <vector_index_build_threads>4</vector_index_build_threads> <enable_new_ann>1</enable_new_ann> <log_processors_profiles>0</log_processors_profiles> <compile_expressions>0</compile_expressions> <compile_sort_description>0</compile_sort_description>
参数 | 作用 | 推荐值 |
---|---|---|
| 启用 ByteHouse 新一代向量近似搜索引擎,支持 HNSW 等高效索引算法。 |
|
| 控制向量索引构建时的并发线程数,提升大数据量下的索引构建速度。 | 4-8(根据 CPU 核数调整) |
| 禁用处理器配置文件日志,减少日志写入开销,提升查询性能。 |
|
| 关闭表达式编译优化,避免复杂向量计算的编译耗时。 |
|
| 关闭排序描述编译优化,提升向量排序操作的性能。 |
|
对于数据量较大的向量检索场景,建议通过 config.xml
进行以下配置优化。修改配置参数的操作详情请参见修改配置参数。
<enable_use_local_lock>1</enable_use_local_lock> ## 基于机器内存调整 2.6 版本默认 2GB <vector_index_cache_size>193273528320</vector_index_cache_size> ## 180 Gigabyte <disk_unique_key_index_meta_cache_size>2147483648</disk_unique_key_index_meta_cache_size> <disk_unique_key_index_data_cache_size>5368709120</disk_unique_key_index_data_cache_size> <additional_services> # 可以后期加,不需要重启生效 <VectorSearch>true</VectorSearch> <FullTextSearch>true</FullTextSearch> </additional_services>
参数 | 作用 | 推荐值 |
---|---|---|
| 启用本地锁机制,减少写入冲突,提升高并发场景下的向量数据写入性能。 |
|
| 设置向量索引在内存中的缓存大小,直接影响向量检索的响应速度。 | 根据机器内存调整,建议 100GB+ |
| 唯一键索引元数据的缓存大小,优化键值检索性能。 | 2GB 以上 |
| 唯一键索引数据的缓存大小,提升数据读取速度。 | 5GB 以上 |
| 动态启用额外服务,无需重启服务。 | 按需启用 |