faiss IndexIVFPQ 源码详解 - train

train整体流程简介

    1. 目标:生成原向量中心点,残差(向量中心点的差值)向量中心点,部分预计算的距离(因为采用的是pq方式,所以原始向量会分成M个子空间,这里训练的都是子空间的中心点)。
    2. 残差:向量中心点的差值
    3. 为什么训练残差向量中心点:因为残差向量更集中,误差更小。
    4. PQ: 把向量空间划分为M个子空间,在检索时从每个子空间找最邻近的中心点,假如每个子空间有n个中心点,则pq可表达的中点点为n的m次方个。
    5. 流程
      1. 把原始向量分成M个子空间,针对每个子空间训练中心点(如果每个子空间的中心点为n,则pq可表达n的M次方个中心点)。
      2. 查找向量对应的中心点
      3. 向量减去对应的中心点生成残差向量
      4. 针对残差向量生成二级量化器。

 

距离计算方式

339 /** Precomputed tables for residuals

 340  *

 341  * During IVFPQ search with by_residual, we compute

 342  *

 343  *     d = || x - y_C - y_R ||^2 , x - y_c:表示的残差,y_r:表示残差对应的中心点

 344  *

 345  * where x is the query vector, y_C the coarse centroid, y_R the

 346  * refined PQ centroid. The expression can be decomposed as:

 347  *

 348  *    d = || x - y_C ||^2 + || y_R ||^2 + 2 * (y_C|y_R) - 2 * (x|y_R)

 349  *        ---------------   ---------------------------       -------

 350  *             term 1                 term 2              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值