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

相关推荐
这张生成的图像能检测吗4 小时前
(论文速读)基于图像堆栈的低频超宽带SAR叶簇隐蔽目标变化检测
图像处理·人工智能·深度学习·机器学习·信号处理·雷达·变化检测
leijiwen4 小时前
城市本地生活实体零售可信数据空间 RWA 平台方案
人工智能·生活·零售
L-ololois4 小时前
【AI产品】一键比较GPT-5、Claude 4、Gemini 2.5、Deepseek多chatbot
人工智能·gpt
2401_841495644 小时前
【自然语言处理】生成式语言模型GPT复现详细技术方案
人工智能·python·gpt·深度学习·语言模型·自然语言处理·transformer
Elastic 中国社区官方博客4 小时前
如何使用 Ollama 在本地设置和运行 GPT-OSS
人工智能·gpt·elasticsearch·搜索引擎·ai·语言模型
FreeBuf_4 小时前
PortGPT:研究人员如何教会AI自动回移植安全补丁
人工智能
不说别的就是很菜4 小时前
【AI助手】从零构建文章抓取器 MCP(Node.js 版)
人工智能·node.js
GIS数据转换器4 小时前
2025无人机在电力交通中的应用实践
运维·人工智能·物联网·安全·无人机·1024程序员节
Blossom.1184 小时前
大模型在边缘计算中的部署挑战与优化策略
人工智能·python·算法·机器学习·边缘计算·pygame·tornado
HelloRevit5 小时前
机器学习、深度学习、大模型 是什么关系?
人工智能·深度学习·机器学习