OpenSearch的演进与语义检索技术革新

周末听了一场关于Open Search的技术分析,整理如下,供大家参考。OpenSearch,作为ElasticSearch的一个分支,不仅继承了其强大的搜索和分析能力,更在开源社区的驱动下,不断演进和创新。本文将介绍OpenSearch的最新进展,特别是其在语义检索技术方面的突破。

OpenSearch简介

OpenSearch是一个开源的搜索与分析套件,起源于ElasticSearch 7.10.2版本,坚持Apache-2.0开源协议,以开源优先和社区驱动为原则。OpenSearch项目不仅提供了强大的搜索功能,还包括了DataPrepper、Dashboard等组件,广泛应用于搜索、可观测性、安全分析、数据可视化和机器学习等领域。

向量搜索引擎从原始向量做写入、查询,OpenSearch做了很多运行速度、压缩量化方面的优化。到NeuralSearch语义搜索引擎,做的易用性升级,纯文本端到端的写入查询,做了其他的功能优化,比如Hybrid query.多模态、文本切分、rerank。现在:稀疏编码的语义搜索引擎,knn之外又多了一种选择,各自具备自己的优势,适配不同的应用场景
在这里插入图片描述

OpenSearch社区

OpenSearch的社区活跃度极高,拥有超过5亿的总下载量,版本更新频繁,合作伙伴和外部贡献者众多。在SlackWorkspace和OpenSearchForum上,有超过7000名成员参与讨论,月浏览量达到30万以上。这种活跃的社区氛围为OpenSearch的持续发展和创新提供了坚实的基础。

OpenSearch使用场景

OpenSearch平台的优势在于其检索功能的沉淀、分布式架构、安全性和数据分析能力。特别是k-NN索引的横向扩展能力,可以在集群中任意扩展数据节点,支持高达16K维度的向量,满足大规模数据集的搜索需求。

1.结合OpenSearch丰富的检索功能,与OpenSearch DSL结合完成复杂的查询过程

  • a. 比如加入复杂的过滤条件;
  • b. 与其他查询结合,e.g.BM25

2.基于OpenSearch分布式平台,高可靠性、高扩展性、高性能,平台确保分布式查询和写入 的负载均衡。
3.安全性:基于OpenSearch的安全插件,实现api级别鉴权,多用户访问控制,安全审计日志
4.数据分析:OpenSearch dashboards拥有丰富的数据可视化工具,数据进行可视化分析。dashboards上的搜索比较工具进行可视化的搜索效果比较,进行case
研究分析

使用场景:
在这里插入图片描述

OpenSearch向量数据库

在深度学习时代,万物皆可Embedding,无论是图像、文本、视频还是音乐,都可以通过向量化的方式进行高效的索引和检索。OpenSearch通过k-NN插件,实现了向量引擎的适配,支持NMSLiB、Faiss、Lucene等多种向量库,以及HNSW和IVF等索引结构,为用户提供了强大的向量搜索能力。
在这里插入图片描述

k-NN插件

OpenSearch支持Exact k-NN和Approximate k-NN (ANN)搜索,以及基于遍历和基于图的过滤方式。Exact k-NN适合前置过滤,而ANN适合后置过滤。OpenSearch还能够在搜索时进行过滤,打通了Lucene、JNI和向量引擎,智能决定k-NN类型,权衡代价与精度。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

数据评测:性能与召回率的平衡

在1亿数据集的评测中,OpenSearch展现出了稳定支持10亿数据的能力,以及优秀的召回率和低延迟。例如,在r5.12xlarge实例上,p90查询延迟仅为16.9毫秒,召回率达到0.99。这表明OpenSearch在处理大规模数据集时,能够保持良好的性能和高准确度。
在这里插入图片描述

端到端的文本语义检索

对于期望实现语义检索的用户,OpenSearch提供了neural-search插件,这是一个端到端的API,支持文本写入和检索。通过ingestion processor和neural query builder,用户可以轻松实现文本的语义检索。

在这里插入图片描述

ml-commons插件:模型全流程托管

ml-commons插件为语义检索提供了强大的支持,实现了模型的全流程托管,包括一键部署、节点级部署、负载均衡和GPU支持。此外,它还支持远程连接到SageMaker、Bedrock、Cohere、OpenAI等服务,以及通过AgentFramework连接大模型,助力RAG。

OpenSearch提供了可视化查询比较工具,允许用户使用相同的搜索测试不同的查询,比较结果的差异。这有助于用户更好地理解不同查询方式的效果,优化搜索策略。

k-NN算法中的性能取舍

在k-NN算法中,性能和召回率往往需要权衡。例如,HNSW算法虽然召回率高达99%,但延时和内存占用相对较高;而IVF+PQ算法虽然召回率较低,但延时和内存占用更优。OpenSearch通过智能选择算法,帮助用户在性能和精度之间找到最佳平衡。
在这里插入图片描述

稀疏编码:鱼和熊掌兼得

稀疏编码(neural sparse)是一种既能保证高相关性,又能节省存储空间、保证速度的语义检索方法。通过深度学习模型,稀疏编码能够将文档和查询转换为稀疏向量,实现高效的语义匹配。
在这里插入图片描述

稀疏编码的鲁棒性

稀疏编码在真实数据服从训练数据分布时表现出色,模型能够使用稀疏准确的向量表征,产出精确的结果。即使在支持论据不足的情况下,稀疏编码也能保持较高的搜索相关性。
在这里插入图片描述

稀疏编码语义检索的计算方法

稀疏编码通过点积计算查询和文档之间的分数,结合权重和语义模型,实现高效的语义匹配。
在这里插入图片描述

稀疏编码与Lucene的结合

OpenSearch将稀疏编码与Lucene结合,构建了倒排索引和FeatureField,实现了高效的检索。
在这里插入图片描述

Doc-only模式:极致速度

OpenSearch的Doc-only模式通过减少模型推理和索引遍历,实现了极致的搜索速度,同时保持了较高的搜索精度。
在这里插入图片描述

稀疏编码性能测试结果

OpenSearch的稀疏编码模型在性能测试中表现出色,无论是搜索精度还是速度,都远超传统的BM25模型。

在这里插入图片描述
在这里插入图片描述

稀疏编码资源消耗

稀疏编码模型在资源消耗方面也具有优势,索引大小和峰值内存占用都远低于稠密索引模型。
在这里插入图片描述

稀疏编码持续优化

OpenSearch团队持续优化稀疏编码模型,通过预训练和知识蒸馏,减小模型尺寸,提高搜索精度,降低ingestion代价。
在这里插入图片描述

集成多路召回

OpenSearch还支持集成多路召回,通过BM25与k-NN的集成,以及更复杂的查询组合,进一步提升搜索精度。
在这里插入图片描述


结语

OpenSearch作为一个活跃的开源项目,其在语义检索技术方面的创新和优化,提供了一个高效、准确、可扩展的搜索平台。

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

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

相关文章

Pythonnet能导入clr,但无法引入System模块?

【pythonnet详解】—— Python 和 .NET 互操作的库_pythonnet 详细使用-CSDN博客 Python中动态调用C#的dll动态链接库中方法_python 如何调用c# dll-CSDN博客 需求&#xff1a;Python调用并传List<float>类型参数给.Net 起初&#xff1a;直接 # 创建一个Python浮点数…

【Altium】如何处理PCB上所有焊盘被误盖油

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决焊盘被误盖油的操作 2、 问题场景 所有焊盘都可以设置为盖油或不盖油&#xff0c;由于焊盘需要用来焊接元器件&#xff0c;所以都不会设置盖油。由于误操作或者创建封装时设置错误&#xff0c;造成一定数量的焊盘…

“论单元测试方法及应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 1、概要叙述你参与管理和开发的软件项目,以吸你所担的主要工作。 2、结给你参与管理和开发的软件项目&#xff0c;简要叙述单元测试中静态测试和动态测试方法的基本内容。 3、结给你惨与管理和研发的软件项目,体阐述在玩测试过程中,如何确定白盒测试的覆盖标准,及如…

Hadoop权威指南-读书笔记-01-初识Hadoop

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 第一章—初识Hadoop Tips&#xff1a; 这个引例很有哲理嘻嘻&#x1f604;&#xff0c;道出了分布式的灵魂。 1.1 数据&#xff01;数据&#xff01; 这一小节主要介绍了进入大数据时代&#xff0c;面…

方正小标宋简体、仿宋GB2312、楷体GB2312字体

文章目录 下载地址所有的文件wps使用方正小标宋简体、仿宋GB2312、楷体GB2312 字体用途方正小标宋简体仿宋GB2312楷体GB2312 下载地址 【金山文档 | WPS云文档】 方正小标宋简体、仿宋GB2312、楷体GB2312 https://kdocs.cn/l/cksgHDLneqDk 所有的文件 wps使用 方正小标宋简体…

IoTDB Committer+Ratis PMC Member:“两全其美”的秘诀是?

IoTDB & Ratis 双向深耕&#xff01; 还记得一年前我们采访过拥有 IoTDB 核心研发 Ratis Committer “双重身份”的社区成员宋子阳吗&#xff1f;&#xff08;点此阅读&#xff09; 我们高兴地发现&#xff0c;一年后&#xff0c;他在两个项目都更进一步&#xff0c;已成为…

Vue 结合 Element-UI ,管理系统快速生成指南(一)

前言 Element UI 作为一个基于 Vue.js 的 UI 组件库,提供了丰富的界面元素和交互组件,大大提高了开发效率。结合这两大前端技术栈,开发者能够快速搭建出一个功能强大、界面优雅的管理系统。 由于管理系统实现流程还是相对较多&#xff0c;所以分几篇文章进行讲解 本章主要先…

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…

电影交流平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;电影类型管理&#xff0c;留言反馈管理&#xff0c;电影中心管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;电影中心&#xff0c;留言反馈 开发系统&#xff1a;Window…

kvm虚拟机启用console登录

kvm虚拟机console登录&#xff0c;就是执行 virsh console 的时候&#xff0c;宿主机可以控制虚拟机。 一、centos7的kvm虚拟机开启console登录&#xff08;在虚拟中操作&#xff09; 1、备份文件 [roothadoop51 ~]# cp /etc/grub2.cfg /etc/grub2.cfg_back 2、用下面命令可…

Git 命令学习之推送本地项目到 Gitee 托管

引言 在软件开发中&#xff0c;版本控制是不可或缺的一环。Git 作为目前最流行的分布式版本控制系统&#xff0c;广泛应用于各种项目中。而 Gitee&#xff08;原名码云&#xff09;作为国内知名的代码托管平台&#xff0c;为开发者提供了稳定、安全的代码托管服务。下面将详细…

mysql mgr集群断电重启

一、前言 mysql mgr集群所有节点都断电重启时&#xff0c;就会面临一个问题&#xff0c;应该怎么重新构建mgr集群 二、操作 查询所有节点的master状态 show master status; 查看同步状态&#xff0c;可以通过uuid知道是通过哪个节点进行同步的数据 查看所有节点的uuid&#x…

【工具推荐】Clink

文章目录 Clink介绍Clink安装删除版权信息 Clink介绍 Clink 是一个工具&#xff0c;它将 GNU Readline 库的强大命令行编辑功能与 Windows 原生的 cmd.exe 命令提示符结合在一起。Readline 是 Bash shell 中众所周知的库&#xff0c;Bash 是许多 Linux 发行版的标准 shell。通…

基于C语言+控制台的学生信息管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

备份SQL Server数据库并还原到另一台服务器

我可以将SQL Server数据库备份到另一台服务器吗&#xff1f; 有时您可能希望将 SQL数据库从一台服务器复制到另一台服务器&#xff0c;或者将计算机复制到计算机。可能的场景包括测试、检查一致性、从崩溃的机器恢复数据库、在不同的机器上处理同一个项目等。 是的&#xff0c…

【嵌入式】探索嵌入式世界:在ARM上构建俄罗斯方块游戏的奇妙之旅

文章目录 前言&#xff1a;1. 简介2. 总体设计思路及功能描述2.1 设计思路2.2 功能描述2.3 程序流程图 3. 各部分程序功能及详细说明3.1 游戏界面函数3.1.1 游戏界面中的图片显示3.1.2 游戏开始界面3.1.3 游戏主界面3.1.4 游戏结束广告界面3.1.5 游戏界面中的触摸反馈3.1.6 游戏…

C++11新特性【下】

一、lambda表达式 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。如果待排序元素为自定义类型&#xff0c;需要用户定义排序时的比较规则&#xff0c;随着C语法的发展&#xff0c;人们开始觉得上面的写法太复杂了&#xff0c…

化身李时珍弟子,演绎中医药故事,李良济花神戏,创新传承中医药文化

6月29日&#xff0c;李良济与花神戏联袂举办的儿童剧本&#xff0c;在李良济嵩山店强势开启。 20余名小朋友&#xff0c;一起在这次中医药儿童剧本活动中&#xff0c;化身李时珍弟子&#xff0c;学中医&#xff0c;识草药&#xff0c;传承中医智慧&#xff0c;沉浸式学习传统文…

关于一维,二维正态分布的绘制

绘制一维正态分布代码 % 给定的均值和标准差 mu 0; % 例如&#xff0c;你可以改变这个值 sigma 1; % 例如&#xff0c;你可以改变这个值 % 定义x的范围&#xff08;例如&#xff0c;从mu-3*sigma到mu3*sigma&#xff0c;步长为0.1&#xff09; x mu - 3*sigma:0.1:m…

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…