HNSW:Hierarchical Navigating Small World
回忆Qdrant跟HNSW有关的参数:m,ef_construct,hnsw_ef阅读以下内容:
1.HNSW采用近似Redis跳表的思想
在高层跳过大量离目标点较远的点,从而快速定位到离目标较近的点,从而缩小搜索范围。
在构图时采用启发式搜索选择连接邻居节点,从而防止出现不连通图的情况。搜索过程中维护动态list,从而减少遗漏的情况。
2.基于图的向量检索算法在向量检索的评测性能比较优秀
如果注重检索算法性能,并容忍一定的空间成本,多数场景下推荐基于图的检索算法。
HNSW是一种典型的应用广泛的图算法,很多分布式检索引擎都对HNSW算法进行了分布式改造,以应用于高并发大数据量的线上查询。例如Qdrant,Milvus
3.HNSW的缺点
除了保存数据之外,还需要一定的内存维护图的关系,而且每个节点分配固定的内存,其中有些没有使用而造成一定的浪费。
4.HNSW限定了每层图上结点的最大度数m跟性能正相关。
一般m的合理范围在[2,200]。
m越高,对具有高维特征(信息密度较低,数据点之间距离较远,可能存在大量无关信息)的数据集来讲,性能越好;
m越低,对具有低维特征(信息密度较高,数据点之间距离较近,有助于发现数据之间的关系)的数据集来讲,性能越好。
5.建索引时可以指定efConstruction
efConstruction越大,构造时间越长,index 质量越好。
检索时可以用ef来指定搜索范围,ef值越大,搜索范围越大,搜索时间也越长,一般和efConstruction值搭配调节。
注意:efConstruction增加的过快并不能提升index quality。
本文暂时没有评论,来添加一个吧(●'◡'●)