---
title: 修改ann-benchmarks自带算法参数
description: "执行测试命令前可以修改对应算法的参数，以获得较好的召回率和每秒查询率（QPS，Queries Per Second）。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/testguide/tstg/kunpeng_ann_marks_007.html
sourcePath: /source/zh/kunpengdbs/testguide/tstg/kunpeng_ann_marks_007.html
indexId: 086e2f8ae4efaf5cfddc2d2b1a96ffea0939073f9f4e3a9e7ad924f4d07a6d2a63
---
# 修改ann-benchmarks自带算法参数

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

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

2. 按“i”进入编辑模式，修改Milvus-hnsw算法参数，见表1 参数说明。
  本次测试的M、efConstruction和nlist参数的取值是根据多次测试和分析确定的，是兼顾查询结果准确性、内存消耗、时间消耗的综合考虑。用户可以根据实际情况选择参数取值。

**表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值的大小。 |


4. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
