鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

修改ann-benchmarks自带算法参数

执行测试命令前可以修改对应算法的参数,以获得较好的召回率和每秒查询率(QPS,Queries Per Second)。

  1. 以修改Milvus的相关算法参数为例,打开Milvus目录下的config.yml文件。
    1
    vim /data/ann-benchmarks-main/ann_benchmarks/algorithms/milvus/config.yml 
    
  2. 修改Milvus-hnsw算法参数,见表1 参数说明
    表1 参数说明

    参数名称

    参数描述

    建议值

    配置原则

    M

    M参数表示“M-层”或“M层级”,它决定了HNSW图的层次结构深度。

    M参数控制了图中每个节点的子节点数量,“M”等于“2”,表示每个节点有两个子节点,“M”等于“3”,表示每个节点有三个子节点,以此类推。

    M参数越大,HNSW图的层次结构越深,搜索过程中需要遍历的节点数量减少,搜索效率越高。但是,M参数过大会增加构建索引的时间和内存消耗。

    [24]

    请根据数据量大小、对存储空间的要求、对搜索速度、准确性的要求等方面综合考虑M值的大小。

    efConstruction

    efConstruction参数决定了在构建HNSW图时,算法在每一层级所需的“有效搜索”次数(Effective Searches)。

    在HNSW算法中,“有效搜索”是指从图的顶层节点开始,沿着图的层次结构向下搜索,直到找到满足一定准确性的最近邻点。

    efConstruction参数的值越大,算法在构建索引时进行的有效搜索次数就越多,从而找到更准确的最近邻点。这对于需要高准确性的应用场景是有利的,但同时更多的有效搜索次数会增加构建索引的时间和内存消耗

    [200]

    请根据对索引构建时间的敏感程度、对搜索准确性的要求等方面综合考虑efConstruction值的大小。

  3. 修改Milvus-scann算法参数,见表2 参数说明
    表2 参数说明

    参数名称

    参数描述

    建议值

    配置原则

    nlist

    nlist参数决定了Scann算法在每个桶(bucket)中存储的最近邻点列表的大小。

    每个桶实际上是一个哈希表,用于存储与查询向量相似的点。在构建索引时,算法会为每个桶选择nlist个最近邻点,并将它们存储在该桶中。

    较大的nlist参数可以提供更高的搜索准确性,因为每个桶中存储的最近邻点数量增加,搜索过程中有更多的候选点可供选择,但同时内存消耗也会越大。

    在高维空间中,搜索准确性通常已经足够高,而较小的nlist参数可能会牺牲一些准确性以换取更快的搜索速度。

    [128]

    请根据对存储空间的要求,搜索准确性,搜索速度等方面的要求综合考虑nlist值的大小。

本次测试的M、efConstruction和nlist参数的取值是根据多次测试和分析确定的,是兼顾查询结果准确性、内存消耗、时间消耗的综合考虑。用户可以根据实际情况选择参数取值。