常见向量索引 ivfqp, hnsw

ivfqp

适用条件

  1. IVFQP 索引特别适合处理大规模高维数据集。例如在图像检索、生物信息学、推荐系统等领域,数据量可能达到数百万甚至数十亿级别,且每个数据点是高维向量。通过将向量空间划分为多个子空间,并对每个子空间进行量化,IVFQP 能够显著减少存储需求,同时提高搜索速度
  2. IVFQP 索引通过量化技术对向量进行压缩,减少了存储开销。例如在电商系统中,商品特征向量可能需要存储大量数据,使用 IVFQP 可以将高维向量压缩为低维码字,从而节省存储空间
  3. IVFQP 索引通过倒排索引快速缩小搜索范围,并结合量化技术进一步提高检索速度。例如在图像检索系统中,用户上传一张图片,系统需要在短时间内找到与之相似的图片,IVFQP 能够在几秒钟内完成检索。
  4. IVFQP 是一种近似最近邻搜索方法,虽然在某些情况下可能无法达到精确搜索的精度,但通过合理设置参数,可以在速度和精度之间取得平衡。

实现流程

利用训练样本集进行训练

1、利用indexFlat 类型的量化器进行粗聚类
2、细聚类中心训练
2.1 利用粗聚类中心于聚类样本集合的残差,得到一个新的d 纬残差向量,以此作为新的向量集进行细聚类
2.2 pq 量化器训练,将原始向量分成M段字向量

  • 根据制定的细聚类中心点数量,对Mi 子向量进行聚类
  • 聚类完成之后保存好聚类中心的数据
  • 借助粗聚类中心,细聚类中心得到预计算表,

倒排索引构建: index.add 向索引中添加原始向量

1、计算粗聚类中心与原始向量的残差
2、计算a中残差向量与细类中心的L2聚类,每个残差向量得到的距离表是 ksub * M 维的
3、利用 向量表得到原始向量的向量编码
4、将原始向量加入倒排联表中

检索query 向量

1、在所有粗聚类中心下 search,得到距离以及对应的粗聚类中心。
2、在选定nprobe 数量的粗聚类中心倒排链中检索。获取最终距离以及docid

  • 选出 nprobe 个倒排链
  • 创建scanner 实例:
  • 对query 进行embedding ,query向量分段,计算与所有细聚类中心的内积
  • 遍历倒排链中的编码后的原始向量节点,找到最相似的TopK

一些常见的问题

1、粗聚类量化器的作用
对训练向量进行粗聚类,得到粗聚类中心

2、抽样数据逊两最终得到什么?
粗聚类中心,存在量化器中
细聚类中心

3、倒排链是什么,和细聚类中心的关系是什么?
倒排链是一个vector,和粗聚类中心是一一对应的关系
倒排链中保存的是原始向量量化之后的结果,同时还保存了docid 信息;
std::vector<std::vector<uint8_t>> codes; // <粗聚类中心id, <编码>>
std::vector<std::vector<idx_t>> ids; //<粗聚类中心id, >

4、可调节参数

  • nprobe 检索倒排链的数量
  • max_codes 所有倒排链假期来,最多对比 max_codes 个向量
  • nlist 建库时,粗聚类中心点个数
  • topk 需要多少个item 结果

hnsw

hnsw 基本原理

分层结构

hnsw 构建了一个分层的图结构,每一层都是一个导航图,最高层的节点较少,用于快速定位到目标区域,底层的节点较多,用于精确搜索
在搜索时候,最高层开始,快速定位到目标区域,然后逐层向下搜索,知道最底层找到最近临

图的构建

在每一层中,每一个节点会与一定数量的邻居节点项链,邻居节点也通过一定策略选择的
高层的节点是底层采样得到的,这样可以减少高层的节点数量,加快搜索速度

检索过程

从最高层的入口开始,沿着图的边缘逐步与目标节点更近的节点
每一次移动时候,选择当前节点的邻居节点与目标节点作为下一个访问节点
当达到最底层,继续在底层图中搜索,知道找到最近邻

hnsw 优势场景

相比ivfpq, hnsw 在一下场景中具有明显优势

1、动态数据更新场景
hnsw 图结构支持动态插入和删除操作,可以随时向图中添加新的数据点,而不需要重新构建整个索引
ivfpq 的局限性,ivfpq 是基于量化和聚类的方法,一旦数据集发生变化,可能需要重新训练聚类模型,和量化模型,更新成本高。
hnsw 比较适合在实时推荐系统中,用户的行为数据不断更新,需要动态的将心的数据点加入到索引中进行检索。

2、数据分布不均匀的场景
hnsw 的图结构能够自适应数据分布,即使数据在某些区域聚集,图的链接也能自动的调节,能够保证搜索效率
ivfpq 过于依赖聚类划分,如果数据分布不均匀,那么可能导致某些聚类区域过大或过小,影响检索效率

3、低纬度数据
ivfpq 依赖于量化的方法,低纬度数据可能检索,效果不佳,导致检索精度下降

posted @ 2025-05-10 17:42  wsl-hitsz  阅读(154)  评论(0)    收藏  举报