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) //记录每个码字对应量化向量
   143   144   145   146   147   148   149   150   151   152   153