PQ系列的算法大致的套路分三个阶段:训练、量化、查询
[1] - 训练
假设样本向量维度D=64,将原始的D维向量分成M=8段,那么每段的子维度subD=8.
对训练集每段分别进行k-means聚类,假设每段聚类的k=256,那么M段分别聚类之后会得到MxsubDxk个类中心(也叫码本),每个类中心的维数为subD.
[2] - 量化
首先将样本分成M段,对于每个子段m,去256个类中心中寻找距离最近的类中心U(m),原始向量则量化成M维索引的笛卡尔乘积.
[3] - 查询
分对称SDC和非对称查询ADC.
ADC距离的查询过程如下:首先计算查询向量和类中心的距离,得到距离表. 遍历样本库中的向量,根据距离表,计算每个样本与查询向量的距离和. 返回k个距离最接近的样本.