如果一组查询的召回不好先给所有向量做白化常常会得到一张很好看的分布图。可分布更圆不一定意味着读者真正需要的那份文档排得更靠前。2021 年的句向量白化研究表明这类后处理可以改善其研究设定中的表示与检索它不是对所有现代 Embedding 的通用增益承诺。论文 讨论的历史模型与数据应留在原来的语境中。今天更有用的问题是怎样让一次白化实验有可解释的失败结果三份数据比一个变换公式更重要拟合集只负责估计均值和协方差验证集负责选择是否降维、正则强度与检索参数测试集保留到方案固定以后。若看着测试集表现反复调整矩阵就算没有用标签训练神经网络也已经泄漏了选择信息。文档和查询还要使用同一份变换。原来按照原向量建立的 ANN 索引不能只换查询侧后处理就宣称兼容。应重新生成文档表示构建候选索引版本再比较与相同变换下精确搜索的差距。用二维例子把数值边界讲清设中心化后的协方差为C L Lᵀ把列向量变成z L⁻¹(x-μ)。在协方差非退化时拟合样本的变换后协方差接近单位矩阵。随后做 L2 归一化会再次改变协方差所以不能一边说“已经单位协方差”一边把归一化后的分布当作同一个数学对象。下面不用第三方库显式实现二维 Cholesky。这样可以看清奇异输入被拒绝的位置而不是让数值库替我们藏住条件。二维只是教学选择不代表真实模型只有两个有效维度。内图的冻结μ,W分别供查询和文档变换使用L2 只接变换结果。图用行向量写(x-μ)W等价于源码的列向量形式L⁻¹(x-μ)此时WL⁻ᵀ。源码把均值与三角矩阵保存在同一个工件中这里只验证白化代数未执行图中的 L2 检索流程。import math def fit(points): if len(points) 3 or any(len(p) ! 2 for p in points): raise ValueError(need at least 3 two-dimensional points) n len(points) mu [sum(p[j] for p in points) / n for j in (0, 1)] centered [(x-mu[0], y-mu[1]) for x, y in points] a sum(x*x for x, y in centered) / (n-1) b sum(x*y for x, y in centered) / (n-1) c sum(y*y for x, y in centered) / (n-1) if a 0 or c-b*b/a 1e-12: raise ValueError(singular covariance: regularize or reduce dimension) return mu, (math.sqrt(a), b/math.sqrt(a), math.sqrt(c-b*b/a)) def transform(point, fitted): mu, (l11, l21, l22) fitted z1 (point[0]-mu[0]) / l11 return z1, (point[1]-mu[1]-l21*z1) / l22 train [(0, 0), (2, 1), (1, 3), (4, 2), (3, 5)] fitted fit(train) z [transform(p, fitted) for p in train] cov lambda i, j: sum(p[i]*p[j] for p in z)/(len(z)-1) assert abs(cov(0, 0)-1) 1e-10 assert abs(cov(1, 1)-1) 1e-10 assert abs(cov(0, 1)) 1e-10 try: fit([(0, 0), (1, 1), (2, 2)]) except ValueError: pass else: raise AssertionError(degenerate input accepted) query transform((2, 3), fitted) assert all(math.isfinite(v) for v in query) print(covariance identity checked; singular input rejected)例子跑通以后还要验证什么这段代码已在本地 macOS、CPython 3.9.6 下运行实际输出为covariance identity checked; singular input rejected。它验证的是例子中的数据约束与分支不包含线上服务的吞吐或延迟测量。此处只检验二维代数没有调用 Embedding、ANN 或重排器也没有真实检索质量结果。真实实验至少应报告查询集、相关性标注、模型版本、矩阵版本、Recallk 与 NDCGk并按语言、文档类型和长尾实体切片比较。没有提升甚至变差都是应保留的实验结果。延伸阅读Whitening Sentence Representations2021 年论文为后处理思路提供出处不外推其跑分。