配置说明
Milvus在创建Collection的时候需要指定向量的维度,测试工具会在读取数据集的时候将维度加载进来,但是KBest支持的维度是有范围的,而且指定的索引类型也是强规定区分大小写。现将测试工具ann_benchmarks的config.yml配置文件所有涉及的配置说明如表1所示。

建议用户在Milvus启动创建索引操作之后检查日志信息,若Milvus一直在日志里循环打印报错信息,表示配置参数错误,请根据报错信息进行问题定位,保证查询的正确进行。
参数名称 |
参数描述 |
类型范围 |
建议值 |
配置原则 |
---|---|---|---|---|
index_type |
测试时指定的索引类型 |
std::string,“KBEST” |
KBEST |
无。 |
metric_type |
测试时指定的距离度量方式 |
const char*,
|
无 |
数据集自带,无需手动配置。 |
dim |
特征维度 |
int,[1,2999] |
无 |
数据集自带,无需手动配置。 |
R |
邻居节点数 |
int,[11,499] |
[50] |
该参数影响图构建耗时和最终索引质量,一般推荐使用50,过大可能会导致构建耗时过长以及搜索性能下降,过小则会影响检索精度。 |
L |
构图时的候选节点列表 |
int,[11,1999] |
[100] |
该参数影响图构建耗时和最终索引质量,一般推荐使用100,过大可能会导致构建耗时过长。 |
A |
构图剪枝时的角度阈值 |
int,[10,360] |
[60] |
对于IP数据集,一般使用120,L2数据集一般使用60。 |
init_builder_type |
构建的索引算法名称 |
const std::string&,
|
"RNNDescent" |
无特殊情况,优先使用RNNDescent。 |
consecutive |
块大小 |
int,[1,31] |
[20] |
根据实际情况自行调整。 |
efs |
检索时的候选节点列表大小 |
int,[1,构图节点数] |
[400] |
对于小规模数据集,一般在10~500左右。更大的efs会带来更高的检索精度,但是检索性能也会降低。建议在精度达标情况下efs取较小值。 |
num_search_thread |
查询时线程数 |
int,[1,cpu核数] |
[1] |
根据实际情况自行调整。 |
build_index_type |
构图时的索引类型,选择邻居节点的策略 |
const std::string &
|
"SSG" |
无特殊情况,优先使用"SSG"。 |
graph_opt_iter |
构图时图索引自我迭代的轮数 |
int,[0, 30] |
[6] |
该参数影响图构建耗时和最终索引质量,过大可能会导致构建耗时过长。 |
reorder |
构图之后是否重排 |
bool,true或false |
[true] |
该参数影响图构建耗时和最终索引质量,建议开启。 |
adding_pref |
检索前超参候选集插入阈值 |
int,大于0 |
[52] |
该参数用来限制搜索路径长度,提前停止检索。数值根据实际情况进行调整。 |
patience |
检索耐心值 |
int,大于0 |
[80] |
该参数用来限制搜索路径长度,提前停止检索。数值根据实际情况进行调整。 |
level |
控制量化的等级。支持范围改变 |
int,[0,3] |
[2] |
level 1代表SQ8量化,level 2代表SQ4量化。对于IP数据集,一般使用1,L2数据集使用2。 |