向量搜索设置
UDB-SX 支持以下向量搜索设置。要了解更多关于静态和动态设置的信息,请参阅 配置 UDB-SX。
集群设置
下表列出了所有可用的集群级别向量搜索设置。有关集群设置的更多信息,请参阅 配置 UDB-SX 和 使用 API 更新集群设置。
| 设置 | 静态/动态 | 默认值 | 描述 |
|---|---|---|---|
knn.plugin.enabled |
动态 | true |
启用或禁用 k-NN 插件。 |
knn.algo_param.index_thread_qty |
动态 | 1 |
用于原生库和 Lucene 库(UDB-SX 2.19 及更高版本)索引创建的线程数。保持此值较低可减少 k-NN 插件对 CPU 的影响,但也会降低索引性能。 |
knn.cache.item.expiry.enabled |
动态 | false |
是否从内存中移除在指定时间段内未被访问的原生库索引。 |
knn.cache.item.expiry.minutes |
动态 | 3h |
如果启用,指原生库索引在被从内存中移除之前的空闲时间。 |
knn.circuit_breaker.unset.percentage |
动态 | 75 |
断路器的原生内存使用阈值。内存使用量必须低于 knn.memory.circuit_breaker.limit 的此百分比,knn.circuit_breaker.triggered 才能保持为 false。 |
knn.circuit_breaker.triggered |
动态 | false |
当内存使用量超过 knn.circuit_breaker.unset.percentage 值时,此值为 true。 |
knn.memory.circuit_breaker.limit |
动态 | 50% |
原生库索引的原生内存限制。在默认值下,如果机器有 100 GB 内存,JVM 使用 32 GB,那么 k-NN 插件将使用剩余 68 GB 的 50%(即 34 GB)。如果内存使用量超过此值,插件将移除最近最少使用的原生库索引。 |
knn.memory.circuit_breaker.enabled |
动态 | true |
是否启用 k-NN 内存断路器。 |
knn.model.index.number_of_shards |
动态 | 1 |
用于模型系统索引的分片数量,模型系统索引是存储用于近似最近邻搜索模型的 UDB-SX 索引。 |
knn.model.index.number_of_replicas |
动态 | 1 |
用于模型系统索引的副本分片数量。通常,在多节点集群中,此值应至少为 1 以提高稳定性。 |
knn.model.cache.size.limit |
动态 | 10% |
模型缓存限制不得超过 JVM 堆内存的 25%。 |
knn.faiss.avx2.disabled |
静态 | false |
静态设置,指定是否在 x64 架构的机器上禁用基于 SIMD 的 libopensearchknn_faiss_avx2.so 库,并加载非优化的 libopensearchknn_faiss.so 库(用于 Faiss 引擎)。更多信息,请参阅 单指令多数据优化。 |
knn.faiss.avx512_spr.disabled |
静态 | false |
静态设置,指定是否在 x64 架构的机器上禁用基于 SIMD 的 libopensearchknn_faiss_avx512_spr.so 库,并加载 libopensearchknn_faiss_avx512.so、libopensearchknn_faiss_avx2.so 或非优化的 libopensearchknn_faiss.so 库(用于 Faiss 引擎)。更多信息,请参阅 Faiss 引擎的 SIMD 优化。 |
索引设置
下表列出了所有可用的索引级别 k-NN 设置。
设置中定义的几个参数目前处于弃用过程中。这些参数应在映射中设置,而不是在索引设置中。映射中设置的参数将覆盖索引设置中设置的参数。在映射中设置参数允许一个索引拥有具有不同参数的多个 knn_vector 字段。
| 设置 | 静态/动态 | 默认值 | 描述 |
|---|---|---|---|
index.knn |
静态 | false |
索引是否应为 knn_vector 字段构建原生库索引。如果设置为 false,knn_vector 字段将存储在文档值中,但近似 k-NN 搜索功能将被禁用。 |
index.knn.algo_param.ef_search |
动态 | 100 |
ef(或 efSearch)表示搜索期间使用的最近邻动态列表的大小。较高的 ef 值会导致更准确但更慢的搜索。ef 不能设置为低于查询的最近邻数量 k 的值。ef 可以取 k 和数据集大小之间的任何值。 |
index.knn.advanced.approximate_threshold |
动态 | 15000 |
一个段在创建用于近似最近邻搜索的专门数据结构之前必须拥有的向量数量。设置为 -1 以禁用构建向量数据结构,设置为 0 以始终构建它们。 |
index.knn.advanced.filtered_exact_search_threshold |
动态 | 无 | 在过滤的近似最近邻搜索期间切换到精确搜索所使用的过滤 ID 阈值。如果段中过滤 ID 的数量低于此设置的值,则将在过滤的 ID 上执行精确搜索。 |
index.knn.derived_source.enabled(实验性) |
静态 | false |
从 _source 存储中移除向量,减少向量索引的整体磁盘消耗。仅支持非嵌套字段。此功能在 UDB-SX 中是实验性的。不推荐用于生产环境。不保证向后兼容性。 |
index.knn.algo_param.ef_construction |
静态 | 100 |
请改用映射参数设置此值。 |
index.knn.algo_param.m |
静态 | 16 |
请改用映射参数设置此值。 |
index.knn.space_type |
静态 | l2 |
请改用映射参数设置此值。 |