评估 Elasticsearch 中的标量量化

作者:来自 Elastic Thanos Papaoikonomou, Thomas Veasey

在 8.13 版本中,我们为 Elasticsearch 引入了标量量化功能。通过使用此功能,最终用户可以提供浮点向量,这些向量在内部作为字节向量进行索引,同时在索引中保留浮点向量,以便可选地重新评分。这意味着他们可以将索引内存需求降低四分之一,这是其主要成本。目前,这是一个可选择加入的功能,但我们认为与将向量索引为浮点数相比,这是一个更好的权衡。在 8.14 版本中,我们将使其成为默认设置。然而,在这样做之前,我们希望对质量影响进行系统评估。

多语言 E5-small 是我们在 Elasticsearch 中提供的一个高质量小型多语言段落嵌入模型。它有两个版本:一个跨平台版本,可以在任何硬件上运行,还有一个为 Elastic Stack 中的 CPU 推理优化的版本(参见此处)。E5 代表了自动量化的一个挑战性案例,因为它产生的向量角度变化小且相对于最新技术模型维度较低。如果我们能够在为这个模型启用 int8 量化时实现几乎没有损害,我们就可以有信心它将可靠工作。

这次实验的目的是评估在广泛的检索任务中使用此模型描述的标量量化 kNN 搜索的效果。更具体地说,我们的目标是评估从全精度索引切换到量化索引的性能下降(如果有的话)。

方法论概述

在评估中,我们依赖于 BEIR,并针对我们考虑的每个数据集构建了一个使用默认超参数(m: 16, ef_construction: 100)的全精度和一个 int8 量化索引。首先,我们尝试了 Elastic 在此处提供的多语言 E5-small 模型的量化版本(仅权重),表 1 概述了 nDCG@10 分数(k:10,num_candidates:100):

表 1:精选 BEIR 数据集的全精度和 int8 量化指数的 nDCG@10 分数
DatasetFull precisionInt8 quantizationAbsolute differenceRelative difference
Arguana0.370.362-0.008-2.16%
FiQA-20180.3090.304-0.005-1.62%
NFCorpus0.3020.297-0.005-1.66%
Quora0.8760.875-0.001-0.11%
SCIDOCS0.1350.132-0.003-2.22%
Scifact0.6490.644-0.005-0.77%
TREC-COVID0.6830.672-0.011-1.61%
Average-0.005-1.05%

总体而言,平均而言,似乎有轻微的相对下降,约为 1.05%。

接下来,我们考虑重复使用多语言 E5-small 的未量化版本进行相同的评估过程(请参阅此处的模型卡片),表 2 显示了相应的结果。

表 2:在精选的 BEIR 数据集上多语言-E5-small 的 nDCG@10 分数
DatasetFull precisionInt8 quantizationAbsolute differenceRelative difference
Arguana0.3840.379-0.005-1.3%
Climate-FEVER0.2140.222+0.008+3.74%
FEVER0.7180.715-0.003-0.42%
FiQA-20180.3280.324-0.004-1.22%
NFCorpus0.310.306-0.004-1.29%
NQ0.5480.537-0.011-2.01%
Quora0.8820.881-0.001-0.11%
Robust040.4180.415-0.003-0.72%
SCIDOCS0.1340.132-0.003-1.49%
Scifact0.670.666-0.004-0.6%
TREC-COVID0.7090.693-0.016-2.26%
Average-0.004-0.83%

再次观察到性能略微相对下降,平均下降为 0.83%。最后,我们对多语言 E5-base 重复了相同的实验,性能下降甚至更小(0.59%)。

但这还不是全部:量化 HNSW 索引的增加效率以及原始浮点向量仍然保留在索引中的事实,使我们能够通过重新评分来恢复部分性能的损失。更具体地说,我们可以通过在量化索引中进行近似 kNN 搜索来检索更大的候选池,这是相当快速的,然后根据原始浮点向量计算相似性函数并进行相应的重新评分。

作为概念验证,我们考虑了 NQ 数据集,其在多语言 E5-small 上表现出较大的性能下降(2.01%)。通过设置 k=15、num_candidates=100 和 window_size=10(因为我们对 nDCG@10 感兴趣),我们获得了改进的分数为 0.539,恢复了约 20% 的性能。如果我们进一步将 num_candidates 参数增加到 200,则可以获得与全精度索引相匹配的分数,但响应时间更快。在 Arguana 上使用相同的设置,得分从 0.379 提高到 0.382,从而将相对性能下降从 1.3% 限制到仅为 0.52%。

结论

我们的评估结果表明,标量量化可以用来减少 Elasticsearch 中向量嵌入的内存占用,而不会对检索性能造成显著损失。性能下降在较小向量中更为明显(多语言 E5-small 生成的向量大小等于 384,而 E5-base 提供 768 维的嵌入),但这可以通过重新评分来缓解。我们相信,对于大多数用户来说,标量量化将是有益的,我们计划在 8.14 版本中使其成为默认设置。

准备在你的应用中构建 RAG 吗?想尝试使用向量数据库的不同 LLMs 吗? 查看我们在 Github 上为 LangChain、Cohere 等提供的示例笔记本,同时加入即将开始的 Elasticsearch 工程师培训!

原文:Evaluating scalar quantization in Elasticsearch — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/606642.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySql#MySql安装和配置

目录 一、卸载不需要的环境 二、安装mysql yum 源 三、开始安装 四、如果保证安装成功呢? 五、MySql 启动! 六、登录mysql 七、配置文件说明 八、设置开机启动! 本次安装是在Linux环境在centos7中完成 首先先将自己切换成root 一、…

彻底搞懂大小端存储and调试中内存窗口如何使用?

定义 首先我们有一个常识,Windows采用小端存储方式。 探究Windows下vs2019是什么存储? 在小端存储方式中,低字节存储在内存的低地址处,高字节存储在内存的高地址处。这与大端存储方式恰好相反,大端存储方式中高字节存…

[图解]DDD领域驱动设计浮夸,Eric Evans开了个坏头

0 00:00:00,630 --> 00:00:02,790 今天我们要讲的是 1 00:00:03,930 --> 00:00:07,420 DDD领域驱动设计浮夸 2 00:00:07,700 --> 00:00:10,590 Eric Evans开了个坏头 3 00:00:14,790 --> 00:00:17,380 在《领域驱动设计》的 4 00:00:18,650 --> 00:00:22,59…

QT:小项目:登录界面 (下一章连接数据库)

一、效果图 登录后&#xff1a; 二、项目工程结构 三、登录界面UI设计 四主界面 四、源码设计 login.h #ifndef LOGIN_H #define LOGIN_H#include <QDialog>namespace Ui { class login; }class login : public QDialog {Q_OBJECTpublic:explicit login(QWidge…

暴露自己IP地址有什么危险

暴露自己的IP地址确实存在一定的危险性&#xff0c;以下是关于这一问题的详细探讨&#xff1a; 一、IP地址的重要性 IP地址是互联网通信中的关键标识&#xff0c;它使得网络中的设备能够相互识别并进行数据传输。在网络世界中&#xff0c;每台设备都需要一个独特的IP地址来确…

2024蓝桥杯CTF writeUP--packet

根据流量分析&#xff0c;我们可以知道129是攻击机&#xff0c;128被留了php后门&#xff0c;129通过get请求来获得数据 129请求ls Respons在这 里面有flag文件 这里请求打开flag文件&#xff0c;并以base64编码流传输回来 获得flag的base64的数据 然后解码 到手

C语言 举例说明循环嵌套

今天 我们来说循环的嵌套 如果一个循环体内 又包含了另一个循环结构 我们称之为循环的嵌套 我们之前学的 While do-while for 都可以进行相互的嵌套 如下图 在 While 循环语句中再嵌套一个 While 循环语句 do-while 中嵌套 do-while for中嵌套 for 例如 我们做一个九九乘法…

mysql中varchar与bigint直接比较会导致精度丢失以至于匹配到多行数据

在mysql中&#xff0c;我们都知道如果一个索引字段使用了函数或者计算那么查询的时候索引会失效&#xff0c;可是我相信在联表的时候我们只会关注两个表关联字段是否都创建了索引&#xff0c;却没有关注过这两个字段的类型是否一致&#xff0c;如果不一致的话索引是会失效的&am…

Redis 实战3

系列文章目录 本文将从跳跃表的实现、整数集合来展开 Redis 实战 Ⅲ 系列文章目录跳跃表的实现跳跃表节点层 前进指针跨度 整数集合的实现升级升级的好处提升灵活性节约内存 降级整数集合 API总结 跳跃表的实现 Redis 的跳跃表由 redis.h/zskiplistNode 和 redis.h/zskiplist…

面向初学者:什么是图数据库

当数据成为关键生产要素&#xff0c;许多企业开始面临利用海量数据辅助企业复杂决策的现实难题。而在数据爆发式增长&#xff0c;关联复杂度激增的趋势下&#xff0c;图数据库成为企业加工关联数据、挖掘隐藏价值、智能决策升级的关键技术之一&#xff0c;在全球范围内开始被使…

如何更快地执行 Selenium 测试用例?

前言&#xff1a; 当我们谈论自动化时&#xff0c;首先想到的工具之一是 Selenium。我们都知道Selenium WebDriver 是一个出色的 Web 自动化工具。实施Selenium 自动化测试的主要原因是加速 selenium 测试。在大多数情况下&#xff0c;Selenium 的性能比手动的要好得多。但是&…

(2024,DONN,OCNN,复数域,交替的非线性激活层与振荡器层,复值反向传播)深度振荡神经网络

Deep Oscillatory Neural Network 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 方法 2.1 深度振荡神经网络&#xff08;DONN&#xff09; 2.2 振荡卷积神经网…

人物特效游戏玩法,门坎低,适合新手上手项目【揭密】

项目简介&#xff1a; 本项目涉及我们日常使用的美肤产品和效果维持&#xff0c;我们需要提交自己的作品&#xff0c;完成官方网站发布的任务。任务完成后&#xff0c;提交审核&#xff0c;一旦审批通过&#xff0c;收益就会到账。 项 目 地 址 &#xff1a; laoa1.cn/1961.…

Python-VBA函数之旅-round函数

目录 一、round函数的常见应用场景 二、round函数使用注意事项 三、如何用好round函数&#xff1f; 1、round函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog.csdn.net/ygb_1024?spm1010.2…

部署tomcat部署LNAMT

这里写目录标题 部署tomcatjava环境安装 部署LNAMT更改tomcat端口号 tomcat就是中间件之一&#xff0c;tomcat本身是一个容器&#xff0c;专门用来运行java程序&#xff0c;java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。 部署tomcat java…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

2024年全网最新AI实景自动无人直播软件:引领智能直播新潮流;打造智能化、互动性强的直播平台

随着互联网的飞速发展&#xff0c;直播已经成为商家品牌推广和产品宣传的重要方式。然而&#xff0c;AI实景自动无人直播软件的问世&#xff0c;进一步推动了直播行业的智能化进程&#xff0c;为商家带来了全新的直播体验。&#xff08;ai无人自动直播大量招商加盟&#xff1b;…

【解疑】ZIP分卷压缩文件如何设置和取消密码?

压缩大文件&#xff0c;我们可以设置压缩成ZIP分卷文件&#xff0c;这样更利于传输和存储。如果分卷文件比较重要&#xff0c;还可以设置密码保护&#xff0c;那ZIP分卷压缩文件的密码如何设置和取消呢&#xff1f;下面一起来看看吧&#xff01; 设置ZIP分卷密码&#xff1a; …

配电室智能巡检机器人

近年来&#xff0c;生产过程高度自动化&#xff0c;各工矿企业关键场所需定期巡检维护。但目前巡检主要靠人工&#xff0c;既耗时费力效率又低&#xff0c;且受环境等因素影响&#xff0c;巡检难以全面规范&#xff0c;隐患或问题易被忽视。在此情况下&#xff0c;如何利用现有…

Python爬虫基础知识学习(以爬取某二手房数据、某博数据与某红薯(书)评论数据为例)

一、爬虫基础流程 爬虫的过程模块化&#xff0c;基本上可以归纳为以下几个步骤&#xff1a; 1、分析网页URL&#xff1a;打开你想要爬取数据的网站&#xff0c;然后寻找真实的页面数据URL地址&#xff1b; 2、请求网页数据&#xff1a;模拟请求网页数据&#xff0c;这里我们介…
最新文章