• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Vpegasus
E-mail: pegasus.wenjia@foxmail.com
博客园    首页    新随笔    联系   管理    订阅  订阅
近似最近邻搜索 (五) PQ 算法

PQ算法全称ProductQuantization,中文名为乘积量化。该算法来源于图像检索,本质上是对向量做压缩。

假如总共有N个数据点,数据的维度是D维。给定一个Query做近邻检索,如果采用暴力检索方式,那么计算复杂度就是N*D(遍历N个点计算距离,每个点计算的复杂度是D)。如果可以对向量进行压缩,比如压缩后的向量维度只有原来的一半,那么复杂度就可以降低一半。

如下图所示,假如原始的向量长度为128(D=128),将向量分为8段(M=8),每段的长度是16维。

采用聚类算法,对于每段训练一个256个(k=256)中心的聚类模型,用聚类中心id表示每一段。由于聚类id有256个,所以只需要8-bits就可以表示一个id。注意每一段都是独立的聚类模型和聚类中心点。

SDC全称symmetric distancecomputation,是将query向量做压缩,转化为用每段用聚类中心id的向量表示。然后计算距离(此时所有待检索的数据点都已经预先转化完成向量压缩)。而ADC算法,则是不对Query向量做压缩,直接计算Query向量到各个聚类中心的距离。一般认为ADC的误差更小一些。


(图片引自知乎:工牌厂程序猿)

posted on 2022-12-03 11:02  Vpegasus  阅读(1583)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3