Page 148 - 《软件学报》2026年第3期
P. 148
江宇轩 等: 权重残差向量量化: 向量压缩与分层索引结构 1111
进行分类搜索.
因此, 在达到指定的级别后, 我们构建的索引会过渡到使用替代搜索算法. 在这项工作中, 我们直接采用了 Top-k
搜索算法, 以提高搜索的性能和效率.
我们将整个索引结构划分为 3 个层次, 如图 3 所示: 精确匹配层、模糊匹配层和搜索层. 当查询向量进入索引
时, 它首先经过精确匹配层. 该层在本工作中由第 1 个码字组成. 我们采用一个可训练的变换矩阵, 它与码本共同
优化, 并在层间传递时调整残差, 以更好地匹配下一层码本, 并校正上一层的量化误差. 这一设置确保了对于相同
的码字, 其对应的实际嵌入始终一致. 基于第 1 个码字, 我们构建了一个倒排索引, 倒排索引根据输入查询向量与
簇中心的匹配度来选择最接近的簇中心. 这一步骤旨在缩小搜索范围, 从而提高后续检索的效率, 并确保嵌入计算
过程中无失真.
查询向量 搜索结果
量化中心 (模糊匹配层)
精确匹配
模糊匹配
量化中心 模糊匹配量化中心
搜索
量化中心 (精确匹配层)
残差向量
Top-k 搜索向量
图 3 基于权重向量量化的索引结构
3.3 检索实现
当查询向量通过精确匹配层后, 我们获得了倒排索引提供的结果——第 1 层的簇中心和残差向量. 随后, 残差
向量经过模糊匹配层. 与模糊匹配层对应的码字是不确定的, 取决于数据集的大小和码本的大小. 对于较大的码本
或较小的数据集, 模糊匹配层可能只对应一个码字, 甚至可能没有码字, 从而在某些情况下取消这一层的作用.
对于第 1 层的每个簇中心, 模糊匹配层构建一个倒排索引, 通过输入的残差向量查询第 2 层的簇中心. 挑战在
于, 对于 WRVQ, 从第 2 个码字开始, 权重是不一致的. 这意味着, 如果严格计算, 倒排索引构建的索引长度不是码
本的长度, 而是嵌入数据的长度. 因此, 倒排索引可能会退化为暴力搜索, 尽管这种方法能提高搜索的准确率, 但其
效率会显著下降.
为了解决这一问题, 在索引构建过程中, 对于与模糊匹配层相对应的所有码字的权重, 我们计算一个近似值来
替换原始的码字权重. 这种近似计算新的残差向量的方法并非绝对准确, 但模糊匹配层的主要目的是进一步缩小
搜索范围. 从几何意义上讲, 经过第 1 层计算后, 查询向量对其残差的方向范围进行了潜在搜索. 为了提高准确性,
模糊匹配层将若干簇中心传递给搜索层.
在第 3 层, 基于精确匹配层的残差向量进行距离计算, 并从模糊匹配层获得目标向量潜在的多个范围子空间.
通过这些子空间, 搜索层能找到查询向量的近似最近邻向量. 整体的算法过程如算法 1 所示.
算法 1. 权重量化表征的索引搜索算法.
输入: 查询向量 q;
输出: 近似最近邻向量 v.
1. //精确匹配层
2. for each c in codebook[1] do
3. central[i] = WRVQ(c) //记录每个码字对应量化向量

