ES 8.14 向量搜索优化

参考:https://blog.csdn.net/UbuntuTouch/article/details/139502650

检索器(standard、kNN 和 RRF)
检索器(retrievers)是搜索 API 中的一种新抽象概念,用于描述如何检索一组顶级文档。检索器被设计为可以嵌套在树形结构中,因此任何检索器都可以拥有子检索器。检索器是一种标准、更通用且更简单的 API,它取代了其他各种搜索元素,如 kNN 和查询。在 8.14 版本中,我们引入了对三种类型的检索器的支持:

Standard — 提供标准查询功能
kNN — 启用基于 HNSW 的密集向量搜索
RRF — 使用倒数排名融合算法将不同的密集和稀疏向量排名结果集合并成一个单一的混合和排序的结果集
检索器方法的两个主要好处是:

所有检索器的结构都是相同的,因此它们更容易学习、编写和维护。
设计成可以在树结构中组合使用,提供了更多的灵活性来设计之前无法定义的查询 —— 例如,不将 kNN 或 RRF 作为顶级元素。
引入检索器是我们简化搜索使用、特别是向量搜索使用的又一步。这一主题包括了像自动向量标准化以实现更高效的余弦相似度和引入 RRF 以便无需调整即可实现高质量混合集的增强功能。我们将继续在这方面进行大量投资,并计划在未来通过我们新的 ES|QL 语言引入相关性排名。

有关将 RRF 与检索器一起使用的其他示例,请参阅此博客。

使用 SIMD (Neon) 针对 int8 向量优化向量距离函数
Elasticsearch 现在使用本机代码使用 SIMD (Neon) 进行向量比较,以提高 ARM AArch64 架构处理器上的性能。此增强的详细信息将在向量相似性计算 - 可笑的速度中讨论。最重要的是,int8 向量的段合并速度比这些处理器上的速度快几倍(通常快 3-6 倍)。此改进为其他任务释放了资源,并加快了段大小优化过程。

这是一系列向量相似性性能改进的又一步。将来,我们打算在其他上下文中使用这种优化,例如改善查询延迟。

密集向量场默认采用 Int8 量化
许多模型生成带有 float32 元素的向量。然而,在检查现实生活场景时,很快就会发现 int8 元素提供了更好的承诺,具有更小的索引(更低的成本)、改进的摄取性能和改进的查询延迟。所有这些都是在几乎不影响排名质量的情况下实现的。有时在质量指标(例如 NDCG 或召回率)排名中可以发现的微小影响可以通过增加正在考虑的候选者数量来轻松减轻。但即使没有这一点,最终用户通常也不会注意到这种变化,从业务角度来看也是如此。

考虑到这一点,我们在 8.12 中向 int8 引入了标量量化。在检查了此功能的生产使用后,我们决定将其设为新索引的默认行为。提供这样的合理默认值可以让用户更轻松地迈出向量搜索的第一步。

参考:回顾相关性:平衡关键字和语义搜索_关键词搜索和语义搜索-CSDN博客

词汇搜索工具箱
像 BM25 这样的文本搜索算法已经存在了几十年,事实上 BM25 经常与文本搜索同义使用。 这篇博文详细介绍了 BM25 的工作原理。

分析器、分词器、过滤器、字段权重和增强都是我们的词法搜索工具箱中的工具,它们使我们能够以非常特定的方式转换文本,以支持一般和非常专业的搜索用例。

但我们还有很多其他工具可供使用:

重新排名是该工具箱中的另一个强大工具,无论是学习排名、语义重新排名等。
同义词在关键字搜索中大量使用,以区分俚语、特定领域的行话等。 通用模型可能无法很好地处理非常小众的同义词。
这些工具用于影响相关性,但更重要的是适应业务规则。 业务规则是自定义规则,它们的用例差异很大,但通常包括使结果集多样化或基于上下文查询结果或其他个性化因素显示赞助内容。

Elasticsearch:实用 BM25 - 第 2 部分:BM25 算法及其变量_bm25算法得到结果样式-CSDN博客

语义搜索并不完美
语义搜索在代表你寻找的内容意图方面非常有效,即使返回的结果不包含你指定的确切关键字,也能返回匹配的结果。然而,如果你正在开发一个搜索应用并将语义搜索纳入现有技术栈,那么语义搜索并非没有一些缺陷。

这些缺陷主要分为三类:

成本
语义搜索本身尚未具备的功能
语义搜索单独无法很好处理的查询
成本可能是金钱(训练或许可模型、计算),也可能是时间。时间可以是延迟(摄入或搜索推断延迟),也可以是开发时间的成本。我们不希望在那些可以用现有工具轻松解决的问题上浪费宝贵的工程时间,而是将这些时间用于解决需要工程关注的难题。

还有许多人们在其搜索解决方案中希望拥有的功能;例如,高亮显示、拼写纠正和错字容忍。这些都是语义搜索当前原生支持度较低的功能,但许多 UI/UX 人员将这些视为用户功能的基本要求。

至于语义搜索可能不擅长处理的查询,通常是一些特定领域的查询。例如:

像型号编号这样的精确匹配
领域专业术语

我们还必须考虑包括业务规则(例如基于流行度、转化率或活动的提升)在内的要求,这些语义搜索本身可能无法本地处理。

查询理解是另一个问题。这可能是简单的数字转换和度量单位处理,也可能是非常复杂的处理,比如处理否定语句。你可能曾经有过令人沮丧的搜索经历,例如搜索 “I want a restaurant that doesn't serve meat - 我想找一家不提供肉类食品的餐厅”。LLM 在这里返回素食餐厅可能还可以,但大多数语义搜索会返回提供肉类食品的餐厅!

混合搜索的优势所在

混合搜索结合了两全其美的优点:它将 BM25 文本搜索的精确性和功能性与向量搜索的语义理解相结合。这导致了更好的召回率和更高的整体相关性。

让我们来看一些例子:

房地产:Modern farmhouse with lots of land and an inground pool in the 12866 zip code - 位于 12866 邮政编码区的现代农舍,拥有大片土地和一个地下游泳池。是否有游泳池及其邮政编码可以作为过滤条件,而风格描述可以使用语义搜索。
电子商务:Comfortable Skechers with memory foam insoles in purple - 带有记忆海绵鞋垫的紫色舒适斯凯奇鞋。颜色和品牌可以作为过滤条件,其余部分可以通过语义搜索来处理。
求职:Remote software engineer jobs using Elasticsearch and cloud native technologies - 使用 Elasticsearch 和云原生技术的远程软件工程师职位。职位名称和远程工作偏好可以作为过滤条件,而工作技能可以通过语义搜索来处理。

在 Elasticsearch 中,混合搜索是什么样子的?
当前,“hybrid search - 混合搜索” 这个术语有点流行,不同的场景下人们可能会有不同的理解。在一些系统中,如果你有一个单独的向量数据库,这可能涉及到对不同数据存储的多次调用,并将它们与一个服务结合起来。但是,Elasticsearch 的一个超能力是所有这些都可以结合在一个单一的索引和一个搜索调用中。

在 Elasticsearch 中,混合搜索可能像一个布尔查询那样简单。这里有一个 Elasticsearch 中布尔查询结构的示例,它结合了文本搜索、KNN 搜索、文本扩展查询和其他支持的查询类型。当然,这可以与重新评分以及其他使 Elasticsearch 如此强大的功能结合使用。布尔查询是将这些文本和向量搜索结合成一个单一查询的非常简单的方法。

在 8.12 版本中

另一种选择是使用 retrievers,从 Elasticsearch 8.14.0 开始,检索器是描述这些复杂检索管道的更简单的方法。 下面是一个示例,它将标准查询与 kNN 查询结合起来作为 retriever,所有这些都汇总起来以使用倒数排名融合 (RRF) 对结果进行排名。

合并结果集
现在你有了一个混合搜索查询,如何将所有这些合并成一个单一的结果集呢?这是一个难题,特别是当分数几乎肯定会因结果检索方式的不同而大相径庭时。

经典的方法,使用布尔查询示例,是采用线性组合,在较大的查询中对每个单独子句应用提升。这是一种经过验证的、老式的技术,我们都熟悉并喜爱,但它可能会很棘手。它需要调整才能得到正确的结果,而且你可能永远也无法做到完美。

如果你使用 retrievers,你也可以使用 RRF。这更容易 - 你可以依赖一个算法,而不需要做任何调整。但也存在一些折衷 - 你对结果集的精细控制更少。RRF 不考虑 BM25 的提升,因此如果你在业务规则上进行提升,可能无法立即获得想要的结果。

最终,你应该选择的方法取决于你的数据和你的用例。

调整词汇搜索相关性
一旦你创建了查询,为了提高相关性进行调整是一个难题,但你有几种可用的工具:

业务指标。从很多方面来说,这些是最重要的指标:用户是否点击了结果,在电子商务用例中,更好的是他们是否完成了购买?你的转化率是否在增加?用户是否花了相当多的时间阅读你网站上的内容?这些都是用户体验的衡量标准,但它们是通过分析收集的,它们是是否你的搜索提供了实际有用的结果的直接证明。对于像 RAG 这样的用例,结果是定制的、主观的,并且可能会发生变化,这可能是真正衡量你的搜索变化影响的唯一方法。
用户调查。为什么不问问用户他们认为结果好还是不好呢?你必须考虑一些因素,比如用户是否会提供真实的回答,但这是了解用户对你的搜索引擎的看法的好方法。
定量衡量相关性的方法,如 MAP 和 NDCG。这些指标需要判断列表,然后也可以用于学习排序。
然而,人们可能会陷入的最大陷阱是为一个或几个 “pet - 宠物” 查询进行调整:你或者你的老板输入的少数查询。你可以改变算法的所有内容,以获得该查询的最佳结果,但这可能会在下游产生连锁效应,因为现在你无意中已经搞乱了大部分其他查询。
 

语义搜索不会取代 BM25 搜索,而是对现有搜索技术的增强。 混合搜索解决了语义搜索固有的许多问题,并且在召回率和功能方面都是两全其美。 语义搜索确实在长尾查询和躯干查询中大放异彩。 查询规则和同义词等工具可以帮助提供最佳的搜索体验,同时释放开发人员宝贵的时间来专注于解决重要问题。

参考:Elasticsearch:介绍 kNN query,这是进行 kNN 搜索的专家方法_knnquery-CSDN博客

Elasticsearch:实用 BM25 - 第 2 部分:BM25 算法及其变量_bm25算法得到结果样式-CSDN博客

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

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

相关文章

安卓系统安装linux搭建随手服务器termux平替软件介绍

引言 旧手机丢可惜,可以用ZeroTermux(一款代替termux)的超级终端,来模拟Linux(甚至你可以模拟Win,只要性能够用) ps:此软件只是termux的增强版,相当于增加右边菜单&…

vue2 + Lodop 制作可视化设计页面 实现打印设计功能(一)

前言: 此功能的来源来自于当时需要制作一个便于客户操作的打印设计功能,然后就有了这个项目。这个帖子主要是用于分享与谈论,相互学习。 目标: 能在vue页面中拖拽组件支持批量操作拖动通过拖拽组件列表里的组件到page进行添加实…

物联网技术-第5章-物联网数据处理

目录 1.物联网数据特征 2.物联网数据处理 (1)数据清洗 (2)数据存储 (3)数据融合 (4)数据挖掘 3.大数据基本概念 4.云计算基本概念 (1)背景 &#xf…

leetcode 动态规划 (基础版) 下降路径最小和

题目: 题解: 这题和三角型路径和相似,但这题无法在像哪一题一样通过换一个方向逃避下标特判。所以这道题就写一个下标特判的方案。特殊的下标是每一行的第一个元素和最后一个元素,它们由头上的一个元素和左上和右上中的其中一个…

HTML(17)——圆角和盒子阴影

盒子模型——圆角 作用:设置元素的外边框为圆角 属性名:border-radius 属性值:数字px/百分比 也可以每个角设置不同的效果,从左上角顺时针开始赋值,没有取值的角与对角取值相同。 正圆 给正方形盒子设置圆角属性…

极验行为式验证码适配Harmony 鸿蒙SDK下载

现阶段,越来越多的开发者正在积极加入鸿蒙生态系统。随着更多开发者的参与,早在去年9月,极验就成为首批拥有鸿蒙NEXT内测版本和手机系统测试机会的验证码供应商。 为了提高各开发者及企业客户集成鸿蒙版本行为验4.0的效率,方便大家…

土壤墒情监测系统的工作原理

TH-TS600土壤墒情监测系统是一种能够实时、连续监测土壤湿度和水分状况的设备系统。以下是关于土壤墒情监测系统的详细介绍: 土壤墒情监测系统通常由以下几个部分组成:用于实时监测土壤湿度、温度等关键参数。传感器可以根据需要布置在不同的深度和位置…

OceanMind海睿思参与编写的《数据智能白皮书(2024年)》正式发布!

近日,由中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)牵头和组织,中新赛克海睿思作为TC601-WG16人工智能数据工作组合作伙伴参与编写的《数据智能白皮书(2024年)》正式发布。 中新赛克的卢云川、…

多波束测线问题

多波束测线问题 问题的背景是海洋测深技术,特别是涉及单波束测深和多波束测深系统。这些系统利用声波传播原理来测量水体深度。 单波束测深系统通过向海底发射声波信号并记录其返回时间来测量水深。该系统的特点是每次只有一个波束打到海底,因此数据分布…

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录 引言复习新作删除链表倒数第N个节点题目描述个人实现参考实现 总结 引言 主管面,面的很凄惨,不过无所谓了,我已经尽力了。上午都在整理的面经,没有复习算法,而且这两天要弄一下论文,二十号就要提…

小电流接地系统单向故障仿真分析

基于Matlab/simulink的小电流接地系统单向故障仿真分析,涵盖了中性点不接地系统仿真和中性点经消弧线圈接地系统仿真模型。 在电力系统中,接地方式的选择至关重要。小电流接地系统,也称为非有效接地系统,在发生单相接地故障时&am…

OSPF被动接口配置(华为)

#交换设备 OSPF被动接口配置 一、基本概念 OSPF被动接口,也称为抑制接口,即将路由器某一接口配置为被动接口后,该接口不会再接受和发送OSPF报文 二、使用场景 在路由器与终端相近或者直接相连的一侧配置被动接口 因为OSPF会定期发送报文…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后,终于通过聆讯,方舟云康控股有限公司(以下简称,方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是,亏损的难…

每日一题——Python代码实现PAT乙级1082 射击比赛(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码分析 代码步骤 时间复杂度分析 空间复杂度分析 总结 我要更强 时…

Redis精要

一、什么是缓存击穿、缓存穿透、缓存雪崩? 缓存穿透 【针对大量非法访问的请求,缓存中没有,直接访问DB】 缓存穿透指的查询缓存和数据库中都不存在的数据,这样每次请求直接打到数据库,就好像缓存不存在 一样。 对于系…

华测监测预警系统2.2 UserEdit.aspx SQL注入致RCE漏洞复现(CVE-2023-5827)

0x01 产品简介 华测监测预警系统2.2是一套针对地质灾害监测预警的科学、完善平台,实现了地质灾害防治管理的科学化、信息化、标准化和可视化。该系统由上海华测导航技术有限公司开发,主要服务于山体滑坡、地裂缝等地质灾害的自动化预警。 0x02 漏洞概述 华测监测预警系统2…

Linux 之内存管理 -free 和 RSS/RES的意义

一、free -h 计算关系: available free buff/cache total used availbleshared 参数 说明 total 总计物理内存的大小 used 已使用的物理内存的大小 free 可用物理内存有多少 shared 多个进程共享的内存总额 buff/cache 写入和读取 磁盘内存缓冲区的大小 avail…

ECharts 雷达图案例001-自定义节点动画

ECharts 雷达图案例001-自定义节点动画 引言 在数据可视化的领域中,ECharts 提供了一种强大的工具来展示多维数据。本文将介绍如何使用 ECharts 创建一个自定义节点样式的雷达图,让数据展示更加生动和个性化。 效果预览 通过自定义节点样式&#xff…

进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证

近日,移远通信工规级5G模组RG500L-EU再传喜讯,率先通过了韩国两大运营商KT和LGU的严格认证。​在此之前,该模组已顺利通过KC认证(韩国法规认证),此次再获运营商认证表明,RG500L-EU已完全满足韩国…

服务器权限管理

我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要。(权限越大,责任越大) 1.基本权限 U--user用户,G-group…