配置说明
在创建Milvus Collection时,需要指定向量的维度。测试工具在读取数据集时会加载该维度,而且指定的索引类型需要严格区分大小写。下面是测试工具ann_benchmarks的config.yml配置文件中所有相关配置的说明,如表1所示。
建议用户在Milvus启动并创建索引操作之后检查日志信息。若Milvus在日志中持续循环打印报错信息,表示配置参数错误,请根据报错信息进行问题定位与解决,确保查询能够正确执行。
KScaNN不提供外部接口,是基于开源ScaNN算法进行了侵入式修改,并对开源接口进行了扩展。因此,KScaNN的内部接口未实施全面的参数限制。Milvus在对接KScaNN后,同样不会限制开源接口的参数,所有调整均由客户根据实际需求自行完成,以达到更佳的性能表现。
参数名称 |
参数描述 |
类型范围 |
建议值 |
配置原则 |
|---|---|---|---|---|
index_type |
测试时指定的索引类型。 |
std::string,“KSCANN” |
KSCANN |
无。 |
metric_type |
测试时指定的距离度量方式。 |
const char*,
|
无 |
数据集自带,无需手动配置。 |
dim |
特征维度。 |
int |
无 |
数据集自带,无需手动配置。 |
n_leaves |
叶子节点数量。 |
int |
[2000] |
该参数影响图构建耗时和最终索引质量,过大可能会导致构建耗时过长以及搜索性能下降,过小则会影响检索精度。 |
dims_per_block |
构图时的PQ阶段,多少维构成一个子向量块。 |
int |
[4] |
一般推荐使用4,根据实际情况自行调整。 |
avq_threshold |
构图时的avq阈值。 |
float |
None |
该参数影响剪枝策略。对于IP数据集,一般使用0.2;L2数据集一般设置为空。 |
soar_lambda |
控制正交性的参数,仅对IP数据集生效。 |
float,大于0 |
[-1] |
-1表示不使用,IP数据集根据实际情况自行调整范围。 |
overretrieve_factor |
指定过检索因子,与soar_lambda一起使用,仅对IP数据集生效。 |
float,[1,2] |
[-1] |
-1表示不使用,IP数据集根据实际情况自行调整范围。 |
train_thread |
构图时的线程数。 |
int |
[cpu核数] |
无特殊情况,设置成cpu核数大小。 |
nprobe |
查询时的复杂query所采用的子空间个数。 |
int,[1,n_leaves] |
[250] |
根据实际情况自行调整。 |
reorder |
查询时在重排前保存结果的数量。 |
int,[k, 底库数量] |
[900] |
k是最终返回结果数量,reorder需根据实际情况自行调整。 |
adp_threshold |
查询时的智能截断阈值。 预留参数,当前版本暂未使用,保留供后续版本扩展使用。 |
float,[0,0.8] |
[0] |
根据实际情况自行调整。 |
adp_refined |
查询时简单query所采用的子空间个数。 预留参数,当前版本暂未使用,保留供后续版本扩展使用。 |
int,[0,nprobe] |
[0] |
典型值为0,但是搜推设置范围为[1,nprobe],这里设置为[0,nprobe]。根据实际情况自行调整。 |
num_thread |
查询时的线程数。 |
int,大于等于1 |
[1] |
无特殊情况设置为1。 |
batch_size |
并行自动分批时优先批次大小。 |
int,大于等于1 |
[1] |
无特殊情况设置为1。 |