
# 向量检索
#### lance_options
**参数说明：**设置Lance向量检索相关参数，包括探测分区数、重排序因子以及分布式TopK剪枝策略。参数格式为逗号分隔的键值对，每个键值对以(key:value)形式表示。
**参数选项及取值**：
表1参数选项及取值说明 
| 参数名                  | 取值                         | 作用                                                                                                                                                                                                                |
|:---|:---|:---|
| nprobes              | 整型\[1\~INT_MAX\]，默认值为1024。 | 代表向量索引查询时探测的IVF分区数，值越大扫描的分区越多，召回率越高，但查询延迟也越大。                                                                                                                                                                     |
| refine_factor        | 整型\[0\~INT_MAX\]，默认值为0。    | 代表重排序因子，索引扫描返回的候选集大小为该因子乘以Top-K值，系统对候选集进行精确距离计算后排序取Top-K。值越大，召回率越高，但计算开销越大。                                                                                                                                       |
| large_topk_threshold | 整型\[0\~INT_MAX\]，默认值为0。    | 代表触发分布式TopK剪枝的K值阈值。当查询的LIMIT K大于等于该阈值时，启用per_shard_topk策略，由CN计算每个DN需返回的候选数量并下推。取值为0表示禁用该策略。                                                                                                                       |
| global_topk_budget   | 浮点\[1.0\~100.0\]，默认值3.0。   | 代表分布式TopK剪枝的预算系数，与large_topk_threshold配合使用。 计算公式：perShardTopk=ceil(global_topk_budget × K / active_dn_count)，其中active_dn_count为活跃DN数量。取值为3.0时perShardTopk等于K，与不启用剪枝的召回率一致。 |
   
**默认值：**(nprobes:1024), (refine_factor:0), (large_topk_threshold:0), (global_topk_budget:3.0)
**示例**：
```
set lance_options='(nprobes:10), (refine_factor:0), (large_topk_threshold:0), (global_topk_budget:3.0)'
```
#### lance_runtime_options
**参数说明：**设置Lance运行行为相关参数，包括CPU线程数、IO线程数和内存池大小。参数格式为逗号分隔的键值对，每个键值对以(key:value)形式表示。
**参数选项及取值**：
表2参数选项及取值说明 
| 参数名           | 取值                       | 作用                                                             |
|:---|:---|:---|
| cpu_threads   | 整型\[1\~INT_MAX\]，无默认值。   | 指定CPU密集型任务（如解压缩、编码、向量计算等）的线程池大小。                               |
| io_threads    | 整型\[1\~INT_MAX\]，无默认值。   | 控制I/O操作的并行度，用于对象存储的并发读写操作数量。                                   |
| mem_pool_size | 整型\[1\~INT64_MAX\]，无默认值。 | 设置DataFusion执行引擎的内存池大小（字节），用于查询执行时的内存管理，特别是支持溢写到磁盘的操作（如排序、聚合）。 |
   
**默认值：** 无**。**
**示例**：
```
set lance_runtime_options='(cpu_threads:8), (io_threads:64), (mem_pool_size:1048576)'
```
![](https://support.huaweicloud.com/sqlref-aura-aidatalake/public_sys-resources/caution_3.0-zh-cn.png)
lance_runtime_options为Postmaster级别参数，需要在Aura服务端启动前配置，不支持运行时通过SET命令修改该参数。
#### lance_cache_options
**参数说明：**设置Lance运行时缓存相关的参数，包括是否开启内部线程池、线程池大小、线程池队列大小、线程池读写超时时间等参数，其中参数格式为逗号分隔的键值对，每个键值对以(key:value)的形式表示。该参数仅在enable_remote_cache=on时才会生效。
**参数选项及取值**：
表3参数选项及取值说明 
| 参数名                    | 取值                      | 作用                                    |
|:---|:---|:---|
| cache_pool_support     | 整型0或1，默认值1。             | 指定Lance运行时开启缓存线程池。                    |
| cache_pool_size        | 整型\[1\~INT_MAX\]，默认值16。 | 控制缓存线程池的大小。                           |
| cache_pool_queue_depth | 整型\[1\~INT_MAX\]，默认值4。  | 控制缓存线程池中每个线程的队列大小。                    |
| cache_pool_timeout     | 整型\[1\~INT_MAX\]，默认值30。 | 控制缓存线程池中每个线程的读写超时时间，超时后会直接发起OBS的IO请求。 |
   
**默认值：**(cache_pool_support:1), (cache_pool_size:16), (cache_pool_queue_depth:4), (cache_pool_timeout:30)
**示例**：
```
set lance_cache_options = "(cache_pool_size:32), (cache_pool_queue_depth:8)";
```
