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的误差更小一些。
(图片引自知乎:工牌厂程序猿)
分类:
ANN
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库