Elasticsearch:优化的标量量化 - 更好的二进制量化

作者:来自 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 段的质心为中心。这使我们能够更好地利用可能的量化向量来表示整个数据集。
  • 每个向量都使用一组独特的优化分位数单独量化。
  • 使用非对称量化,允许在相同的内存占用下实现更高的召回率。

简而言之,在量化每个向量时:

  • 我们将向量置于质心上
  • 计算有限次数的迭代以找到最佳分位数。如果分位数不变或误差(损失)增加,则提前停止
  • 打包生成的量化向量
  • 存储打包的向量、其分位数、其分量的总和以及额外的误差校正项

以下是优化 2 位向量的分步视图。在第四次迭代之后,我们通常会停止优化过程,因为误差(损失)会增加。第一个单元格是每个单独组件的误差。第二个是 2 位量化向量的分布。第三个是整体误差的变化方式。第四个是当前步骤的分位数与正在量化的原始向量的叠加。

存储和检索

优化标量量化向量的存储和检索与 BBQ 类似。主要区别在于我们存储的特定值。
为每个二进制量化向量存储:dims/8 字节、上分位数和下分位数、附加校正项、量化分量的总和。

其中一个细微差别是校正项。对于欧几里得距离,我们存储中心向量的平方范数(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

相关推荐
KKKlucifer9 分钟前
当AI遇上防火墙:新一代智能安全解决方案全景解析
人工智能
DisonTangor1 小时前
【小红书拥抱开源】小红书开源大规模混合专家模型——dots.llm1
人工智能·计算机视觉·开源·aigc
qq_463944862 小时前
【Spark征服之路-2.2-安装部署Spark(二)】
大数据·分布式·spark
浠寒AI2 小时前
智能体模式篇(上)- 深入 ReAct:LangGraph构建能自主思考与行动的 AI
人工智能·python
weixin_505154463 小时前
数字孪生在建设智慧城市中可以起到哪些作用或帮助?
大数据·人工智能·智慧城市·数字孪生·数据可视化
Best_Me073 小时前
深度学习模块缝合
人工智能·深度学习
打码人的日常分享3 小时前
智慧城市建设方案
大数据·架构·智慧城市·制造
YuTaoShao3 小时前
【论文阅读】YOLOv8在单目下视多车目标检测中的应用
人工智能·yolo·目标检测
算家计算4 小时前
字节开源代码模型——Seed-Coder 本地部署教程,模型自驱动数据筛选,让每行代码都精准落位!
人工智能·开源
伪_装4 小时前
大语言模型(LLM)面试问题集
人工智能·语言模型·自然语言处理