You need to enable JavaScript to run this app.
ByteHouse 企业版

ByteHouse 企业版

复制全文
最佳实践
向量检索最佳实践
复制全文
向量检索最佳实践

使用 ByteHouse 向量检索功能时,ByteHouse 提供了一系列配置参数,帮助您提升查询精度,降低响应延迟。您可按需选择在 SQL 建表语句、config.xml 文件或 users.xml 文件中配置相关参数。

SQL 建表配置

使用 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}'
;

参数说明

参数

作用

推荐值

index_granularity

控制每个 Mark 包含的行数,调小可降低读放大,提升向量过滤精度。

128

index_granularity_bytes

禁用 Adaptive Mark,固定 Mark 大小,减少 Mark 定位计算开销。

0

enable_vector_index_preload

数据写入后直接加载向量索引到内存,消除首次查询的加载延迟。

1

merge_selector_config

优化数据合并策略,控制分区数量和合并规模,减少查询时扫描的分区数。

见下方 merge_selector_config 参数详解

merge_selector_config 参数详解

子参数

作用

推荐值

name

选择合并算法,dance 适合向量数据分布,平衡写入与查询性能。

"dance"

max_parts_to_merge_base

单次合并的最大分区数,防止过度合并导致写入阻塞。

100

min_parts_to_merge_base

触发合并的最小分区数,避免小分区长期存在增加扫描开销。

2

max_total_rows_to_merge

单次合并的最大行数,避免构建过大的索引。

20000000

max_parts_to_break

当分区数量超过该阈值时,内置策略会尝试主动拆分大分区,以维持查询性能和合并效率的平衡。

10000

enable_heuristic_to_align_parts

禁用启发式对齐,简化合并逻辑,减少合并耗时。

0(禁用)

User xml 配置

通过 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>

参数

作用

推荐值

enable_new_ann

启用 ByteHouse 新一代向量近似搜索引擎,支持 HNSW 等高效索引算法。

1(启用)

vector_index_build_threads

控制向量索引构建时的并发线程数,提升大数据量下的索引构建速度。

4-8(根据 CPU 核数调整)

log_processors_profiles

禁用处理器配置文件日志,减少日志写入开销,提升查询性能。

0(禁用)

compile_expressions

关闭表达式编译优化,避免复杂向量计算的编译耗时。

0(禁用)

compile_sort_description

关闭排序描述编译优化,提升向量排序操作的性能。

0(禁用)

Config xml 配置

对于数据量较大的向量检索场景,建议通过 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>

参数

作用

推荐值

enable_use_local_lock

启用本地锁机制,减少写入冲突,提升高并发场景下的向量数据写入性能。

1(启用)

vector_index_cache_size

设置向量索引在内存中的缓存大小,直接影响向量检索的响应速度。

根据机器内存调整,建议 100GB+

disk_unique_key_index_meta_cache_size

唯一键索引元数据的缓存大小,优化键值检索性能。

2147483648 bytes(2 GB)

disk_unique_key_index_data_cache_size

唯一键索引数据的缓存大小,提升数据读取速度。

5368709120 bytes(5 GB)

additional_services

动态启用额外服务,无需重启服务。

按需启用

最近更新时间:2025.05.27 10:59:42
这个页面对您有帮助吗?
有用
有用
无用
无用