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

news/2024/4/28 15:28:06/文章来源:https://blog.csdn.net/UbuntuTouch/article/details/137106500

作者: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

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

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

相关文章

企业微信变更主体公证怎么弄?

企业微信变更主体有什么作用&#xff1f;现在很多公司都用企业微信来加客户&#xff0c;有时候辛辛苦苦积累了很多客户&#xff0c;但是公司却因为各种各样的原因需要注销&#xff0c;那么就需要通过企业微信变更主体的方法&#xff0c;把企业微信绑定的公司更改为最新的。企业…

【python 数据可视化】 WordCloud词云图

目录 词云简介 准备工作 安装方法一&#xff1a; 安装方法二&#xff1a; 生成词云步骤 数据预处理&#xff1a; 分词&#xff1a; 统计词频出现的次数&#xff1a; 去除词语&#xff1a; 生成词云&#xff1a; 显示词云&#xff1a; 保存词云&#xff1a; 完整代码 词…

ClickHouse06-ClickHouse中基础的增删改查

使用数据库&#xff0c;最基础的学习都是增、删、改、查&#xff0c;然后才会去了解基础函数和高阶函数&#xff0c;今天就来看看大火的 ClickHouse 中简单的增删改查怎么写&#xff1f; 创建数据库&#xff1a;create database创建表格&#xff1a;create table修改表格&…

jmeter总结之:Regular Expression Extractor元件

Regular Expression Extractor是一个后处理器元件&#xff0c;使用正则从服务器的响应中提取数据&#xff0c;并将这些数据保存到JMeter变量中&#xff0c;以便在后续的请求或断言中使用。在处理动态数据或验证响应中的特定信息时很有用。 添加Regular Expression Extractor元…

AugmentedReality之路-通过蓝图启动AR相机(2)

本文实现打开AR相机和关闭AR相机功能&#xff0c;在主界面点击Start AR按钮后打开AR相机&#xff0c;在主界面点击Stop AR按钮后关闭AR相机 1、启动AR相关插件 通过Edit->Plugins启用AugmentedReality下面的所有插件 2、自定义Pawn 在Content->ARBase目录右键&…

【tensorflow框架神经网络实现鸢尾花分类】

文章目录 1、数据获取2、数据集构建3、模型的训练验证可视化训练过程 1、数据获取 从sklearn中获取鸢尾花数据&#xff0c;并合并处理 from sklearn.datasets import load_iris import pandas as pdx_data load_iris().data y_data load_iris().targetx_data pd.DataFrame…

Scikit-Learn K近邻分类

Scikit-Learn K近邻分类 1、K近邻分类1.1、K近邻分类及原理1.2、超参数K1.3、K近邻分类的优缺点2、Scikit-Learn K近邻分类2.1、Scikit-Learn K近邻分类API2.2、K近邻分类实践(鸢尾花分类)2.3、交叉验证寻找最佳K2.4、K近邻分类与Pipeline1、K近邻分类 K近邻是一种常用的分类…

ES学习日记(一)-------单节点安装启动

基于ES7.4.1编写,其实一开始用的最新的8.1,但是问题太多了!!!!不稳定,降到7.4 下载好的安装包上传到服务器或虚拟机,创建ES目录,命令mkdir -p /路径xxxx 复制安装包到指定路径并解压: tar zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz -C /usr/local/es/ 进入bin目录安装,命…

bugku-web-Flask_FileUpload

查看页面源码 这里提示给他一个文件&#xff0c;它将返回一个python运行结果给我&#xff0c;并且提示只能上传jpg和png文件 传递一个图片 查看源码 传递一个非图片 将源码写入新建的txt文件中 print(hello world) 将文件后缀改为jpg 上传 上传成功 查看源码 得到运行结果 我…

SpringMVC第一个helloword项目

文章目录 前言一、SpringMVC是什么&#xff1f;二、使用步骤1.引入库2.创建控制层3.创建springmvc.xml4.配置web.xml文件5.编写视图页面 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; SpringMVC 提示&#xff1a;以下是本篇文章正文内容&#xf…

​python学习之变量类型​

print单纯输中的十种数据类型只需要用print()函数即可&#xff0c;()里面直接写变量名。 下面重点介绍print格式输出&#xff1a; 第一种方法&#xff1a;一个萝卜一个坑&#xff0c;下面的代码中&#xff0c;{0}、{1}、{2}分别表示j,i,j*i&#xff0c;单引号里面是输出格式。…

WPF 多路绑定、值转换器ValueConvert、数据校验

值转换器 valueconvert 使用ValueConverter需要实现IValueConverter接口&#xff0c;其内部有两个方法&#xff0c;Convert和ConvertBack。我们在使用Binding绑定数据的时候&#xff0c;当遇到源属性和目标控件需要的类型不一致的&#xff0c;就可以使用ValueConverter&#xf…

将html文件转化为pdf

1.用浏览器将html文件打开 2.空白处右键点击打印 3.另存为PDF即可

day72Html

常用标签&#xff1a; 分类&#xff1a; 块级标签&#xff1a;独立成行 行级标签&#xff1a;不独立成行&#xff0c;同一行可放多个行级标 注意网页显示时&#xff0c;忽略空白字符,(回车符&#xff0c;空格&#xff0c;tab制表符&#xff09; 一&#xff09;块级标签&#xf…

【MATLAB源码-第20期】基于matlab的短波通信多径信道仿真,多径数目为3,用QPSK来测试误码率效果输出误码率对比图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 短波通信是一种使用短波频段的无线电通信技术&#xff0c;它具有以下特点&#xff1a; 1. 频段范围&#xff1a;短波通信通常使用3MHz到30MHz之间的频段。这个频段之所以称为“短波”&#xff0c;是因为它的波长相对较短&am…

Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机

1、介绍 待补充 2、架构图 Prometheus &#xff1a;主要是负责存储、抓取、聚合、查询方面。 node_exporter &#xff1a;主要是负责采集物理机、中间件的信息。 3、搭建过程 配置要求&#xff1a;1台主服务器 n台从服务器 &#xff08;被监控的linux或windows虚机&am…

基于js css的瀑布流demo

要实现照片按照瀑布流展示&#xff0c;写个小demo&#xff0c;记录下。 瀑布流实现思路如下&#xff1a; CSS 弹性布局对 3 列按横向排列&#xff0c;对每一列内部按纵向排列 html代码&#xff1a; <div class"content"></div> css代码&#xff1a; …

【leetcode】环形链表的约瑟夫问题

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 首先我们要明确一点&#xff0c;题目要求我们要用环形链表&#xff0c;所以用数组等是不被允…

网站为什么要选择使用安全加速SCDN?

安全加速SCDN&#xff08;安全内容交付网络&#xff09;是一种网络加速服务&#xff0c;旨在提高网站和应用程序的性能和安全性。它使用专门的技术和基础设施来加速内容传输并保护网站免受网络攻击。 安全加速SCDN可以通过内容缓存、快速传输和动态路由技术来加速网站和应用程…

FPGA时钟资源详解(3)——全局时钟资源

FPGA时钟系列文章总览&#xff1a;FPGA原理与结构&#xff08;14&#xff09;——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564 一、概述 全局时钟是 FPGA 中的一种专用互连网络&#xff0c;旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计…