其他参数配置介绍
索引配置
向量检索插件集成了自研的向量检索引擎,提供了包括GRAPH等索引加速算法。当使用向量索引加速时,为了取得更高的查询性能或者查询精度,插件提供了部分与索引相关的参数配置选项。
- GRAPH相关配置。
- neighbors:图索引中每个向量的邻居数,默认值为64,值越大查询精度越高。索引越大,构建速度以及后续的查询速度也会变慢。
- shrink:构建HNSW时的裁边系数,默认值1.0f。
- scaling:HNSW上层图与下层图数据量的缩放倍数,默认值为50。
- efc:构建HNSW时考察邻居节点的队列大小,默认值为200,值越大精度越高,构建速度变慢。
- max_scan_num:扫描节点上限,默认值为10000,值越大精度越高,索引速度变慢。
- PQ相关配置。当创建GRAPH_PQ索引或者PQ码本时都可配置。
- centroid_num:每一段的聚类中心点数目,默认值为255。
- fragment_num:段数,默认值为0,插件自动根据向量长度设置合适的段数。
查询配置
除索引的参数配置外,插件还提供针对向量索引的查询参数配置,可以调整GRAPH向量索引查询中的参数,取得更高的查询性能或者查询精度。
- ef:查询时考察邻居节点的队列大小。值越大查询精度越高,查询速度会变慢。默认值为200。
- max_scan_num:扫描节点上限。值越大精度越高,查询速度变慢。默认值为10000。
集群配置
集群配置参数列表请参见表1。
参数 |
说明 |
---|---|
native.cache.circuit_breaker.enabled |
是否开启堆外内存熔断。默认值为“true”。 |
native.cache.circuit_breaker.cpu.limit |
向量索引堆外内存使用上限。默认值为“45%”。 例如:使用128GB内存的机器且堆内存大小为31GB,默认堆外内存使用上限为(128 - 31) * 45% = 43.65GB,堆外内存使用量超过该值将会触发写入熔断。 |
native.cache.expire.enabled |
是否开启缓存超时设置。默认值:false。取值范围:
|
native.cache.expire.time |
超时时长。默认值:24h。 |
native.vector.index_threads |
创建底层索引时所使用的线程数。该值建议不要设置太大,否则会影响整体写入性能。默认值:4。 |
path.vector.data |
向量检索词典文件存储的路径,默认为“/srv/BigData/elasticsearch/{实例名}/vector”。 |
- 在离线导入数据场景下,为了提高批量写入性能,建议将索引的refresh_interval参数设置为“-1”,即关闭自动刷新索引。
- 建议将备份数“number_of_replicas”设置为“0”,当离线数据导入完成后,再设置为需要的值。
索引缓存查询
向量检索引擎使用C++实现,使用堆外内存,在该插件中提供了两个API,方便对索引缓存进行更好的管理。