第 116 题:ScaNN的各向异性量化,非对称距离计算的精度提升?
题目
ScaNN的各向异性量化,非对称距离计算的精度提升?
完整讲解
一、量化与距离计算
向量量化后,对称距离:查表用「码字-码字」距离近似 $|\boldsymbol{x}-\boldsymbol{y}|$,查询与底库都量化,误差来自两端量化。非对称距离(AQD/ADC):查询不量化,只量化底库;距离用 $|\boldsymbol{q} - \hat{\boldsymbol{y}}|$ 或查表得到的「query 与码字」距离。非对称时只有底库一端有量化误差,通常比对称更准,但查询侧要算 query 到各码字的距离(或查预计算表),计算略增。
二、各向异性与 ScaNN
各向异性:向量在不同维度上方差或重要性差异大;直接 PQ 时某些子空间误差主导,整体距离失真。ScaNN(Scalable Nearest Neighbors)在量化与距离计算上做多项优化,其中各向异性量化指:对子空间或维度做不等权或非均匀量化——方差大/重要的子空间给更多码字或更细量化,方差小的更粗,使总重构误差更均衡,从而提升距离精度。
三、非对称距离的精度提升
- 查询不量化:如上,非对称只量化底库,query 用原始向量与码字距离(或与量化重构距离),减少一端量化误差,recall 通常优于对称。
- 残差/精细码本:对量化残差再做一层量化(多级量化),或对 query 与码字距离做更细的查表/插值,在存储与计算可接受下进一步提高精度。
- ScaNN 中的使用:结合各向异性划分或加权、非对称 ADC、以及训练时优化码本以最小化查询-底库距离误差(而非仅重构误差),使检索阶段的排序更准。
四、工程要点
- 非对称的代价:query 要与各段码字算距离或查表,若码本大则 query 侧计算增加;可通过 IVF 先粗筛再在桶内做非对称 PQ 控制范围。
- 各向异性量化需在训练阶段估计各子空间方差或重要性,再分配 bit 或码本大小。
面试要点
- 能区分对称距离(两端量化)与非对称距离(仅底库量化、query 不量化),并说明非对称更准。
- 能说明各向异性量化:不同子空间/维度不等权或不等码本,使误差均衡、精度提升。
- 能提及 ScaNN 中非对称 + 各向异性、以及训练目标针对检索距离的优化。
记忆要点
- 非对称距离:只量化底库,query 不量化;只有一端误差,精度优于对称。
- 各向异性量化:方差大/重要子空间更细量化,误差均衡,距离更准。
- ScaNN:各向异性 + 非对称 ADC、训练优化检索距离;query 侧计算略增、可结合 IVF。