作者:来自 Elastic Benjamin Trent
在这里,我们解释了 Elasticsearch 中的优化标量量化以及如何使用它来改进更好的二进制量化 (Better Binary Quantization - BBQ)。
我们的全新改进版二进制量化 (Better Binary Quantization - BBQ) 索引现在变得更强大了!在各方面的召回率都有提升(某些极端情况下提升高达 20%),并开启了将向量量化到任意 bit 大小的未来。从 Elasticsearch 8.18 开始,BBQ 索引现已采用我们最先进的优化标量量化算法作为技术支撑。
标量量化简史
标量量化(scalar quantization)在 Elasticsearch 8.12 中引入,最初是一个简单的最小/最大量化方案。每个 Lucene 段,我们会找到给定置信区间的全局分位数。然后使用这些分位数作为最小值和最大值来量化所有向量。虽然这种简单的量化功能强大,但它实际上只适用于整字节量化。
在 Elasticsearch 8.15 中,我们添加了半字节或 int4 量化。为了实现高召回率,我们添加了一个优化步骤,允许动态计算最佳分位数。这意味着不再有静态置信区间。Lucene 将为每个段计算最佳全局上分位数和下分位数。与 float32 向量相比,内存使用率降低了 8 倍。
最后,现在在 8.18 中,我们添加了局部优化标量量化。它优化了每个单独向量的分位数。允许在任何位大小下实现出色的召回率,即使是单比特量化。
什么是优化标量量化?
如需深入了解优化标量量化背后的数学和直觉,请查看我们关于优化标量量化的博客文章。这项工作有三个主要收获:
- 每个向量都以 Apache Lucene 段的质心为中心。这使我们能够更好地利用可能的量化向量来表示整个数据集。
- 每个向量都使用一组独特的优化分位数单独量化。
- 使用非对称量化,允许在相同的内存占用下实现更高的召回率。
简而言之,在量化每个向量时:
- 我们将向量置于质心上
- 计算有限次数的迭代以找到最佳分位数。如果分位数不变或误差(损失)增加,则提前停止
- 打包生成的量化向量
- 存储打包的向量、其分位数、其分量的总和以及额外的误差校正项
存储和检索
优化标量量化向量的存储和检索与 BBQ 类似。主要区别在于我们存储的特定值。
其中一个细微差别是校正项。对于欧几里得距离,我们存储中心向量的平方范数(squared norm)。对于点积,我们存储质心和非中心向量之间的点积。
性能
说得够多了。以下是四个数据集的结果。
- Cohere 的 768 维多语言嵌入。这是一个分布良好的内积数据集。
- Cohere 的 1024 维多语言嵌入。此嵌入模型针对量化进行了很好的优化。
- E5-Small-v2 在 quora 数据集上量化。此模型通常在二进制量化方面表现不佳。
- GIST-1M数据集。这个科学数据集为内积和量化开辟了一些有趣的边缘情况。
以下是 Recall@10|50 的结果:
Dataset | BBQ | BBQ with OSQ | Improvement |
---|---|---|---|
Cohere 768 | 0.933 | 0.938 | 0.5% |
Cohere 1024 | 0.932 | 0.945 | 1.3% |
E5-Small-v2 | 0.972 | 0.975 | 0.3% |
GIST-1M | 0.740 | 0.989 | 24.9% |
总体而言,我们发现,在我们新的优化标量量化的支持下,BBQ 提高了召回率,对于 GIST-1M 数据集而言,这一效果非常显著。
但是,索引时间呢?当然,所有这些每个向量的优化都必须加起来。答案是否定的。
以下是相同数据集的索引时间。
Dataset | BBQ | BBQ with OSQ | Difference |
---|---|---|---|
Cohere 768 | 368.62s | 372.95s | +1% |
Cohere 1024 | 307.09s | 314.08s | +2% |
E5-Small-v2 | 227.37s | 229.83s | < +1% |
GIST-1M | 1300.03s* | 297.13s | -300% |
- 由于使用内积时量化方法在 GIST-1M 上效果很差,由于向量距离无法很好区分,因此构建 HNSW 图需要很长时间。。
结论
这种新的、最先进的量化方法不仅提高了 BBQ 索引的召回率,还解锁了未来的优化。我们现在可以将向量量化为任意位大小,并且我们想探索如何提供 2 位量化,在不重新排序的情况下在内存利用率和召回率之间取得平衡。
Elasticsearch 包含许多新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。
原文:Optimized Scalar Quantization: Even Better Binary Quantization - Elasticsearch Labs