Elasticsearch 和 Kibana 8.13:简化 kNN 和改进查询并行化

作者:Gilad Gal, Tyler Perkins, Srikanth Manvi, Aris Papadopoulos, Trevor Blackford

在 8.13 版本中,Elastic 引入了向量搜索的重大增强,并将 Cohere 嵌入集成到其统一 inference API 中。这些更新简化了将大型语言模型(LLM)集成到用户工作流中的过程,并提高了查询效率,使得通过搜索更快、更容易地解决复杂数据问题,具体包括:

  • 开发了一种新方法,用于在运行 HNSW 向量搜索的不同段之间的线程传递中间结果,这提高了查询延迟,并有时将平均查询时间减少到之前的一半甚至三分之一
  • 使向量搜索更简单、更高效,允许你利用默认设置改善查询性能,无需深入了解底层机制
  • 将统一 inference  API 扩展以包括 Cohere 嵌入,同时支持 OpenAI 和 HuggingFace,便于更轻松地访问更广泛的语言处理工具
  • 引入了为密集向量字段编索引的新选项,以使用 brute force 向量搜索 —— 在适当条件下,brute force 向量搜索显著减小了索引大小并改善了查询延迟,特别是现在我们引入了与 brute force 向量搜索一起使用的标量量化
  • 简化了对高级搜索功能的访问,并扩大了支持的语言模型范围,赋予你实现更细腻、准确和高效的搜索及数据分析结果的能力

8.13 现已在 Elastic Cloud 上可用 —— 唯一包含此最新版本所有新功能的托管 Elasticsearch 服务。你也可以下载 Elastic Stack 及我们的云编排产品 —— Elastic Cloud Enterprise和Elastic Cloud for Kubernetes —— 以获得自我管理的体验。

向量搜索改进

在 8.10 版本中,通过在不同段之间的线程通信改进了查询并行化 ,我们实现了可以在每个查询中为每个段使用一个线程来执行向量搜索查询;也就是说,我们实现了在分片内并行运行查询。这促使我们思考通过在执行相同查询的线程之间共享信息来改进查询延迟的方法。线程间的信息共享允许 Elasticsearch 针对在没有好的候选结果段时更早中止搜索。我们将这一独特方法贡献给了 Lucene,并且你可以在这里查看代码和改进后的查询延迟。更多关于这一新方法的详细信息,请参见加速多图向量搜索博客。

最根本的是,查询运行所需的时间大大减少。在数据集之间改进的程度有很大的变化,但是拥有多个段和高维度的大型数据集可能会经历 2x 至 3x 的改进(在某些情况下可能更多)。当我们用 Cohere 数据集(1百万个 768 浮点维度的向量)进行实验时,我们也在 Lucene 中看到了 1.7x 至 2.5x 的改进。这一影响也可以在我们的夜间基准测试中看到(尽管这是一个小数据集,但在更大的数据集中影响更为显著)。例如,经过 2024 年 3 月 4 日合并的变更之后,knn-search-100-1000-concurrent-with-indexing-latency rally 跟踪测试几乎快了两倍。

简化 kNN 向量搜索

向量搜索的受欢迎程度越来越高。它通过查询向量与文档向量的相似度来排序结果,并返回一小部分与查询向量最相似的向量文档。这意味着更多的用户在没有专门的机器学习或相关性排名团队的情况下使用这项技术。为了方便那些刚接触这一领域的人使用向量搜索,我们使得向量搜索的使用变得更加简单。你仍然可以使用所有高级功能,但你也可以依赖我们的默认设置来更简单地开始,而无需了解所有细微差别。依赖默认设置的结果出乎意料地好。

从工程角度来看,向量搜索延迟(运行查询所需的时间)主要由所需的向量比较操作数量决定。HNSW kNN 向量搜索的美妙之处在于,被评估的向量数量大致与语料库中的向量数量呈对数关系,但由于 Elasticsearch 是分布式的且搜索是并行的,在这个上下文中的语料库是分片内的段。然而,即使是 HNSW,考虑作为返回的 top-k 候选的向量数量也是平衡召回率和延迟的重要方式。到目前为止,用户需要提供两个数字:分片将返回的文档数量(命名为 num_candidates)和查询将返回的文档数量(命名为‘k’)。我们决定允许依赖于两者的默认值。

对我们来说,依赖于默认值意味着我们需要进行大量测试以找到正确的默认值,和往常一样,我们公开进行了这些测试。经过大量讨论和测试,我们最终决定 num_candidates 将是 10,000 和 1.5 倍的 k 这两个值的最小值。默认情况下 k 等于 size,而默认情况下 size 是 10,所以默认情况下每个分片的 num_candidates 将是 15。

int8_flat 和 flat 向量字段索引类型

在过滤后集合的大小相对较小时,通常更好依赖于 brute force 向量搜索而不是基于 HNSW 的向量搜索。潜在的好处包括更好的性能(摄取和查询延迟)、完全准确的召回率(无近似最近邻搜索)、更低的内存消耗以及对于缓存未命中更宽容的查询延迟梯度。实际的界限必须根据情况进行测试,但是如果在过滤后的向量数量低于 10,000,那么 brute force 搜索应该是首选。这些情况出现得惊人地频繁,因为它与通过过滤器的文档数量有关。现在 Elasticsearch 提供了标量量化,可以将索引大小减小到原始大小的约三分之一(有关更多详细信息,请参阅使用字节大小向量节省空间、标量量化 101 和介绍 Lucene 中的标量量化),因此使用 brute force 向量搜索的阈值甚至更高。

在 8.13 版本中,我们将为索引向量字段添加两个新选项:flat 和 int8_flat 向量索引。虽然 flat 是对执行 brute force 向量搜索的索引的一种语法糖,但 int8_flat 将自动将向量量化为 int8,从而减小索引大小并提高查询延迟。

同一文档的多个结果与嵌套向量

在 8.11 版本中,我们增加了对嵌套向量的支持,用于对每个文档字段中具有多个向量的文档进行排名。这个功能在支持以下情况方面非常受欢迎:

  1. 将长文本拆分为多个分块 — 大多数模型限制了 token 的数量(例如,BERT 每个向量限制为 512 个 token),因此,一个文档中如果有一个以上的段落通常意味着创建多个向量来表示该文本。

  2. 每个文档的多个图片 — CNN 模型通常将每个图像转换为单个向量,在电子商务等场景中,每个文档通常都会附带多个图像。

大多数实际情况下使用基于 token 频率的搜索和关键字过滤以及向量搜索的组合。另一种选择(大多数引擎会采用的方法)是对文档进行去规范化和拆分,将每个向量拆分为单独的文档,这样会增加数据摄取的复杂性,也会导致索引变得显著更大且不太经济。就像任何受欢迎的功能一样,我们开始收到许多关于它的问题,比如它是否支持 ELSER(是的),以及是否有选项可以从同一文档返回多个结果 — 目前还没有,但现在我们在 8.13 版本中正在添加此选项。这意味着,例如,你现在可以选择让来自同一文档的不同图片或段落在结果集中分别显示。

统一 inference API 现在集成了 Cohere 嵌入

在 8.13 版本中,Elastic 进一步扩展了其统一 inference API 的功能,包括对 Cohere 嵌入的支持,以增强其多样性和易用性。这一增强构建在 8.12 版本的基础之上,该版本引入了与 OpenAI 和 HuggingFace 嵌入的兼容性,标志着与不断发展的 LLMs 景观无缝集成的持续努力。

这一增强与 E5 多语言嵌入的加入一起,展示了 Elastic 简化和丰富了将 LLMs 集成到你的工作流中的承诺。API 在 8.11 版本首次引入了简单的语法,使得无缝访问更广泛的语言处理工具变得轻松自如,极大地增强了数据分析和处理能力。这一扩展不仅促进了创新,还确保 Elastic 的产品更具包容性,并能够根据你的需求提供巨大价值,为希望在 Elastic 部署中有效利用高级语言模型的人们提供了极大的帮助。

使用新的推理 API 对新支持的模型和服务进行推理就像在 8.11 版本中引入的简单语法中调用一样简单:

PUT /_inference/<task_type>/<model_id>

要开始使用 Cohere 嵌入与你的 Elastic 部署,使用新的 inference API,请参阅此教程。此功能在 8.13 版本中处于技术预览阶段。

新的和改进的健康指标

我们继续扩展 health API 的覆盖范围 — 这是一个我们发现对于监控 Elasticsearch 服务非常有帮助的功能。

使用 DSL 健康指标检测处于数据流生命周期中卡住的数据流

随着我们接近数据流生命周期(data stream lifecycle - DSL)设置的正式发布(在 8.13 版本仍处于技术预览阶段),我们希望在健康报告中覆盖它,该报告已经覆盖了 ILM。Elasticsearch 8.13 版本包括一个新的 DSL 健康指标,它将检测数据流后端索引无法取得进展(停滞)的情况,因为它们在生命周期执行过程中重复出现错误。与所有健康指标一样,我们将包括影响、严重性、受影响的资源和诊断,以简化故障排除过程。

使用增强的 repository_integrity 指标检测配置错误或无效的存储库

有时节点无法按照当前集群元数据指定的方式创建工作的快照存储库实例。这可能是由于缺少插件(导致 UnknownTypeRepository 实例)或其他不良配置(导致 InvalidRepository 实例)。这会在实际尝试使用存储库时引发日志消息和故障,但在其他情况下可能不会被注意到。repository_integrity 健康指标已经覆盖了损坏的存储库;现在,健康指标将直接向用户显示这些错误配置,因为我们将其扩展为报告未知和无效的存储库。

ES|QL 的增强功能

ES|QL 在 Java 客户端中的支持

Elasticsearch 查询语言(ES|QL)为过滤、转换和分析存储在 Elasticsearch 中的数据提供了强大的方式,并且未来还会支持其他运行时环境。它旨在通过最终用户、SRE 团队、应用程序开发人员和管理员轻松学习和使用。

随着 8.13 版本的发布,开发人员现在可以在使用 Elasticsearch Java 客户端时直接从其集成开发环境(IDE)中运行 ES|QL 查询。开发人员可以将 ES|QL 返回的数据投影为域对象或使用数据库游标(如 Resultset)进行迭代。此功能在 8.13 版本中处于 beta 阶段。

数据可视化器中的 ES|QL 支持

数据可视化器现在支持 ES|QL,这是 Elastic 的一种新的管道查询语言,可简化数据调查。在数据可视化器中运行你的 ES|QL 查询,轻松探索你的数据集。选择探索并将你的查询应用于整个数据集或其子集以提高速度。在 8.13 版本中,此功能处于技术预览阶段,并支持关键字、文本、数值、布尔、日期和 IP 字段。

异常检测和 AIOps:可用性增强

你现在可以轻松地将单一指标异常检测图表添加到仪表板中。在仪表板编辑模式下的 “Add panel” 选项中,选择 Machine Learning,然后从菜单中选择 Single metric viewer 选项。

此外,我们还增强了 AIOps 中的模式分析功能,以便你可以展开一行并查看 tokens、正则表达式以及一些示例,以更好地了解模式。此外,语法高亮(字体颜色)反映了检测到的模式。当你选择在 Discover 的主视图中过滤模式时,模式分析功能和 Discover 之间的突出显示现在是一致的。

此外,你现在可以从 Anomaly Explorer 和 Single Metric Viewer 中运行 Log Rate Analysis。单击 Actions 设置图标,然后从菜单中选择 “Run log rate analysis”。你将被引导至机器学习中的日志速率分析界面。

从 8.13 版本开始,你还可以从 Single Metric Viewer 中的异常标记实现相同的功能。单击它们,操作菜单将出现。

Elastic 集成过滤器:改变 Logstash 用户的游戏规则

在不断演变的数据处理和分析领域,灵活和强大的工具需求至关重要。Elastic 集成提供了广泛数据源的模式和可视化,使用户能够充分释放其数据的潜力。

新的 Logstash 插件 —— Elastic Integration Filter —— 结合了 Logstash 的强大功能和数据智能,允许你在将数据发送到 Elasticsearch 之前,将集成特定的转换的执行从 Elasticsearch 转移到 Logstash。通过将 Elastic 集成过滤器添加到 Logstash 管道中,你现在可以弥合 Logstash 的分布式处理能力与 Elastic 集成目录之间的差距。这使你能够解决各种用例,包括空隙环境、数据隐私处理和多个目的地。

Elastic 代理支持 Kafka 现已正式发布

在 11 月份,Elastic Agent 的原生输出到 Kafka 在技术预览中可用。我们很高兴地宣布,Elastic Agent 的 Kafka 版本现已正式发布。

许多组织选择在其数据处理管道中使用 Kafka,因为它具有持久性/排队和流媒体功能,包括全面托管的云服务,以及通过专用连接器简化的操作需求。Kafka 的可扩展架构允许有效处理数据,确保系统稳定性并优化 Elasticsearch 索引。关键功能包括数据聚合和转换,将数据源和消费者解耦以增强稳定性,以及与其他系统(如 Logstash)的全面集成能力。此集成有助于进行高效的数据分析和处理,轻松适应不断增长的数据量和复杂的工作负载。

虽然这个功能在 Beats 中已经暴露了一段时间,但 Elastic Agent 通过将数据收集和解析整合成一个单一代理,简化了部署和管理。它通过 Kibana 的 Fleet 提供了集中管理,可以轻松更新和推送 policies 到主机,并通过集成端点保护增强了安全性,无需额外的工具或努力,从而扩展了 Elastic 的价值。

尝试一下吧!

阅读有关这些功能以及更多内容的发布说明。

现有的 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台访问许多这些功能。还没有在云上利用 Elastic?开始免费试用吧。

此帖子中描述的任何功能或功能的发布和时间仍由 Elastic 自行决定。当前不可用的任何功能或功能可能无法按时或完全交付。

在本博客文章中,我们可能已经使用或引用了第三方生成式 AI 工具,这些工具由各自的所有者拥有和运营。Elastic 对第三方工具没有任何控制权,对其内容、操作或使用不承担任何责任或义务,也不对你使用此类工具可能产生的任何损失或损害负责。在使用个人、敏感或机密信息时,请谨慎使用 AI 工具。你提交的任何数据可能会用于 AI 训练或其他用途。不能保证你提供的信息将被安全地保密。在使用任何生成式 AI 工具之前,请熟悉其隐私实践和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 及相关标记是 Elasticsearch N.V. 在美国和其他国家的商标、标志或注册商标。所有其他公司和产品名称均为其各自所有者的商标、标志或注册商标。

原文:Elasticsearch and Kibana 8.13: Simplified kNN and improved query parallelization | Elastic Blog

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

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

相关文章

java数据结构与算法刷题-----LeetCode278. 第一个错误的版本

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 二分查找 二分查找 解题思路&#xff1a;时间复杂度O( l o g 2 …

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方&#xff0c;有兴趣的可以做 比如对象的销毁和生成可以做成对象池&#xff0c;走到最左边后再移动到最右边循环利用 分析过程文件&#xff0c;采用Blender&#xff0c;资源已上传&#xff0c;可以播放动画看效果&#xff0c;下面截个图&#xff1a; …

将MATLAB的图无失真复制到illustrator

选择复制选项 设置图元文件 复制到illustrator&#xff0c;可以看到每个图片部件都可以操作并且放大无失真

芒果YOLOv8改进145:全新风格原创YOLOv8网络结构解析图

&#x1f4a1;本篇分享一下个人绘制的原创全新风格 YOLOv8网络结构图 感觉搭配还行&#xff0c;看着比较直观。 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 订阅了专栏的读者 可以获取一份 <可以自行修改 / 编辑> 的 YOLOv8结构图修改源文件 YOLOv8结构图…

康耐视visionpro-CogBlobTool工具详细说明

CogBlobTool功能说明: 通过设置灰度值提取感兴趣区域,并分析所提取区域的面积、长宽等参数。 CogBlobTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogBlobTool工具 ②.添加输入图像:单击鼠标右键“链接到”或以连线拖拽的方式选择相应输入源 ③.极性:“白底黑点…

康耐视visionpro-CogFindCircleTool工具详细说明

CogFindCircleTool功能说明: 通过用多个卡尺找到多个点来拟合所要找的圆 CogFindCircleTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogFindCircleTool工具 ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.预期的圆弧:设置预期圆弧的中心点…

基于ssm的bbs论坛系统

开发环境&#xff1a;idea 前端&#xff1a;JQueryBootstraplayui后端&#xff1a;SpringSpringMVCMybatis数据库&#xff1a;mysqlredis 基于ssm的bbs论坛系统&#xff0c;功能有论坛、导读、动态、排行榜以及后台管理系统等等 话不多说&#xff0c;看图&#xff01;&#x…

VTK 9.2.6 加 QT6 编译

上一篇的example编译VTK 9.2.6 源码和VTK Examples 编译 Visual Studio 2022 增加 VTK_GROUP_ENABLE_Qt 为yes 指定QT6-DIR的路径为 C:\Qt\6.6.3\mingw_64\lib\cmake\Qt6

Android room 在dao中不能使用挂起suspend 否则会报错

错误&#xff1a; Type of the parameter must be a class annotated with Entity or a collection/array of it. kotlin.coroutines.Continuation<? super kotlin.Unit> $completion); 首先大家检查一下几个点 一、kotlin-kapt 二、 是否引入了 room-ktx 我是2024年…

康耐视visionpro-CogCaliperTool工具详细说明

CogCaliperTool功能说明: 卡尺工具,用于测量距离 CogCaliperTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogCaliperTool ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③.拖动屏幕上的矩形框到需要测量的位置。卡尺的搜索框角度与边缘不平…

C/C++ ③ —— C++11新特性

1. 类型推导 1.1 auto auto可以让编译器在编译期就推导出变量的类型 auto的使⽤必须⻢上初始化&#xff0c;否则⽆法推导出类型auto在⼀⾏定义多个变量时&#xff0c;各个变量的推导不能产⽣⼆义性&#xff0c;否则编译失败auto不能⽤作函数参数在类中auto不能⽤作⾮静态成员…

MYSQL数字函数:不可不知的数据处理利器

&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自&#xff1a;MYSQL数字函数&#xff1a;不可不知的数据处理利器 ✨​​​​​…

快速上手Spring Cloud 十五:与人工智能的智慧交融

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

使用pytorch构建一个无监督的深度卷积GAN网络模型

本文为此系列的第二篇DCGAN&#xff0c;上一篇为初级的GAN。普通GAN有训练不稳定、容易陷入局部最优等问题&#xff0c;DCGAN相对于普通GAN的优点是能够生成更加逼真、清晰的图像。 因为DCGAN是在GAN的基础上的改造&#xff0c;所以本篇只针对GAN的改造点进行讲解&#xff0c;其…

Pytorch的hook函数

hook函数是勾子函数&#xff0c;用于在不改变原始模型结构的情况下&#xff0c;注入一些新的代码用于调试和检验模型&#xff0c;常见的用法有保留非叶子结点的梯度数据&#xff08;Pytorch的非叶子节点的梯度数据在计算完毕之后就会被删除&#xff0c;访问的时候会显示为None&…

RegSeg 学习笔记(待完善)

论文阅读 解决的问题 引用别的论文的内容 可以用 controlf 寻找想要的内容 PPM 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC / SPPELAN &#xfffc; ASPP STDC&#xff1a;short-term dense concatenate module 和 DDRNet SE-ResNeXt …

快速入门Axure RP:解答4个关键问题!

软件Axure RP 是一种功能强大的设计工具&#xff0c;用于使用 Web、移动和桌面应用程序项目创建交互原型。Axure RP软件中的 RP代表快速原型制作&#xff0c;这是软件Axure RP的核心特征。用户使用Axurere RP软件可以快速地将简单的想法创建成线框图和原型。Axure 因此&#xf…

实时数仓之实时数仓架构(Hudi)

目前比较流行的实时数仓架构有两类&#xff0c;其中一类是以FlinkDoris为核心的实时数仓架构方案&#xff1b;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对FlinkHudi湖仓一体架构进行介绍&#xff0c;这套架构的特点是可以基于一套数据完全实现Lambda架构。实时数…

【二叉树】Leetcode 98. 验证二叉搜索树【中等】

验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例1&a…

【Python函数和类2/6】函数的参数

目录 目标 为函数设置参数 传递实参 关键字实参 关键字实参的顺序 位置实参 常见错误 缺少实参 位置实参的顺序 默认值形参 参数的优先级 默认值形参的位置 总结 目标 上篇博客中&#xff0c;我们在定义函数时&#xff0c;使用了空的括号。这表示它不需要任何信息就…