Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中心,应用程序需要可靠的搜索和检索技术。 其中,如果说旧的全文搜索具有信任因素,那么向量搜索则正在成为先进的搜索技术。

今天,我们将探索全文搜索和向量搜索,并了解如何在当今的数字环境中使用它们。

什么是全文检索?

全文搜索是一种在大量文本数据中查找特定信息的强大技术。 与仅查找精确匹配的简单关键字搜索不同,全文搜索会分析文档的整个文本并了解查询的上下文。 这使得它能够找到相关结果,即使查询不使用你搜索的确切关键字。

这是它的工作原理

  • 索引。 当你将文本数据添加到支持全文搜索的系统时,系统首先创建索引。 该索引就像文本的详细地图,列出了它包含的所有单词和短语以及它们出现的位置。
  • 查询。 执行全文搜索时,你输入包含关键字或短语的查询。 然后,系统在索引中搜索包含全部或部分查询词的文档。
  • 排名。 根据所使用的特定算法,系统将根据结果与你的查询的相关性对结果进行排名。 影响排名的因素包括文档中查询词的频率和接近度,以及文档的整体重要性或发布日期等其他因素。

在 Elasticsearch 中,我们很容易针对数据进行全文搜索,比如:

GET twitter/_search"match": {"city": "上海"}}
}

更多关于全文搜索的知识,我们可以参考文章 “开始使用 Elasticsearch (2)”。

什么是向量搜索?

向量搜索是大多数生成式人工智能应用最迫切的需求。 它通过理解机器和人类语言来检索上下文相关的信息,理解用户想要回报他/她的查询的含义。 这种方法需求量很大,并受到生成人工智能行业专家和组织的高度赞扬。 向量数据库使用这种方法为用户查询检索语义上正确的信息。

例如,用户在检索信息时不需要知道确切的单词 —— 即使他们知道一些相似的单词,向量搜索也可以检索到接近准确的结果。 在信息搜索需要人性化的地方(例如电子商务应用程序),这尤其有用。

通过更紧密地与人类的思维和沟通方式保持一致,它为用户和人工智能系统之间更自然、更高效的交互开辟了新的可能性。 随着这项技术的不断发展,其影响力预计将不断扩大,进一步巩固其作为生成人工智能行业现代信息检索策略基石的作用。

向量搜索拥有令人印象深刻的功能:

  • 语义理解: 同义词、短语甚至隐含含义都不再是个谜。
  • 关键词的相关性: 查找与你的意图真正相关的信息,而不仅仅是关键字填充的页面。
  • 个性化:了解你的喜好并推荐你真正喜欢的东西。

但与其他事物一样,向量搜索也有其独特的不好的特点。 训练模型和计算这些奇特的向量可能会耗费大量的计算资源。 虽然它擅长理解含义,但有时你只需要精确的关键字搜索即可。

向量搜索的工作原理

以下是向量搜索工作原理的简化说明:

  • 数据转换:使用文本的词嵌入或图像的卷积神经网络等模型将每个项目(如文本文档或图像)转换为向量。 这些模型旨在捕获内容的语义或视觉本质。

  • 索引:然后,这些向量会在数据库中建立索引(例如 Elasticsearch),Elasticsearch 专为高效、高维向量搜索而设计。 这种索引通常涉及以相似的项目在向量空间中更接近的方式组织向量。

  • 查询处理:当收到搜索查询时,它也会使用与数据所用的相同模型转换为向量。

  • 向量比较:搜索涉及将查询向量与索引中的向量进行比较。 这通常是使用余弦相似度或欧几里得距离等相似度度量来完成的。 这个想法是找到最接近查询向量的向量

如果你想了解更多关于向量搜索的知识,请详细观看视频:

Elasticsearch Relevance Engine

全文搜索与向量搜索:谁赢了?

虽然全文搜索在精度和速度方面表现出色,而向量搜索解锁了语义理解,但混合方法成为真正的冠军。 想象一下,一个搜索不仅可以理解你的精确关键字(例如“red shoes”),而且还可以找到你未提及的那些舒适的 crimson sneakers。 即使你不使用完美的措辞,这种组合也能提供高度相关的结果。 可以将其视为两全其美:准确性与偶然性相结合,确保你永远不会因为未准确拼写而错过隐藏的宝石。 从本质上讲,混合搜索超越了限制 —— 突破了信息检索的界限,提供了既精确又令人惊喜的体验。

Elasticsearch 在全文搜索积累了深厚的搜索基础,加上在最新的发布中的向量搜索技术,从而使其成为理想的混合搜索工具。这个和一些在世面上的纯向量搜索有无可替代的优势。

混合搜索

在信息检索领域,出现了一股新力量:混合搜索。Elasticsearch 处于领先地位,使开发人员能够开发丰富的人工智能和分析应用程序,利用向量搜索和全文搜索的综合优势。

在构建人工智能应用程序时,这对你意味着什么? 你不再被迫在机器人的精确性和细致入微的理解之间做出选择。 Elasticsearch 弥合了这一鸿沟,使你能够释放搜索的全部潜力并提供真正有意义的体验。

Elasticsearch 通过索引向量搜索加速信息检索。 这一改变游戏规则的功能无缝地融合了闪电般快速的向量搜索、精确的全文搜索和尖端的索引技术 —— 所有这些都由近似最近邻 (ANN) 搜索提供支持。 准备好在浩瀚的数据海洋中体验 100-1,000 倍的更快搜索速度和准确性。

倒数排序融合 - Reciprocal rank fusion

由于全文搜索及向量搜索是使用不同的算法进行打分的,这就造成把两个不同搜索结果综合起来统一排名的困难。向量搜索的分数处于 0-1.0 之间,而全文搜索的结果排名分数可能是高于10或者更大的值。我们需要一种方法把两种搜索方法的结果进行综合处理,并得出一个唯一的排名。

倒数排序融合(RRF)是一种将具有不同相关性指标的多个结果集组合成单个结果集的方法。 RRF 无需调优,不同的相关性指标也不必相互关联即可获得高质量的结果。该方法的优势在于不利用相关分数,而仅靠排名计算。相关分数存在的问题在于不同模型的分数范围差。

具体 RRF 是如何工作的,请详细阅读文章 “Elasticsearch:倒数排序融合 - Reciprocal rank fusion (RRF)”。

更为重要的是:Elasticsearch 目前支持第三方的密集向量搜索,全文搜索(基于 BM25 打分)及稀疏向量搜索(ELSER)。我们可以通过 RRF 来针对所有的搜索方法进行混合搜索,无论是多种搜索方法在一起进行搜索:

有关 Elasticsearch 向量搜索及混合评分的更多阅读,请参考 “NLP - 自然语言处理及向量搜索”。

更多阅读:

  • 使用 Elastic Learned Sparse Encoder 和混合评分的卓越相关性

  • 改进 Elastic Stack 中的信息检索:混合检索 - hybrid retrieval

  • 通过 Elasticsearch 和 Go 使用混合搜索进行地鼠狩猎

  • Elasticsearch:结合两全其美:Elasticsearch 与 BM25 和 HNSW 的混合搜索

  • Elastic Search 8.9:与 RRF 的混合搜索、更快的向量搜索和面向公众的搜索端点

  • Elasticsearch:Search tutorial - 使用 Python 进行搜索 (一)(二)(三)(四)

  • Elasticsearch:语义搜索快速入门

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

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

相关文章

『运维备忘录』之 Kubernetes(K8S) 常用命令速查

一、简介 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用。kubernetes是基于容器技术的分布式架构解决方案,具有完备的集群管理能力&a…

vue3-内置组件-Suspense

Suspense (实验性功能) <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌…

机器学习系列——(十五)随机森林回归

引言 在机器学习的众多算法中&#xff0c;随机森林以其出色的准确率、对高维数据的处理能力以及对训练数据集的异常值的鲁棒性而广受欢迎。它是一种集成学习方法&#xff0c;通过构建多个决策树来进行预测和分类。本文将重点介绍随机森林在回归问题中的应用&#xff0c;即随机…

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM) 所谓预测,就是指通过对事物进行分析及研究,并运用合理的方法探索事物的发展变化规律,对其未来发展做出预先估计和判断。…

【TCP】高频面试题

前言 在IT行业的求职过程中&#xff0c;传输控制协议&#xff08;TCP&#xff09;作为网络通信的核心协议之一&#xff0c;其相关面试题常常出现在各大公司面试中。TCP的稳定性和可靠性是支撑互联网数据传输的基石&#xff0c;因此&#xff0c;对TCP有深入理解不仅能够帮助求职…

架构之模板方法等模式的使用

目录 一、程序编写背景 二、编程思路讲解 - 类图 - 实现逻辑 - 工厂模式 - 模板方法模式 接口类&#xff08;代码&#xff09;抽象类&#xff08;代码&#xff09;具体实现类&#xff08;代码&#xff09;工厂类&#xff08;代码&#xff09;注册类&#xff08;代码&…

【Linux技术宝典】Linux入门:揭开Linux的神秘面纱

文章目录 官网Linux 环境的搭建方式一、什么是Linux&#xff1f;二、Linux的起源与发展三、Linux的核心组件四、Linux企业应用现状五、Linux的发行版本六、为什么选择Linux&#xff1f;七、总结 Linux&#xff0c;一个在全球范围内广泛应用的开源操作系统&#xff0c;近年来越来…

【Linux学习】线程详解

目录 十八.多线程 18.1 线程与进程 18.2 内核视角看待创建线程与进程 18.3 线程优缺点总结 线程的优点&#xff1a; 线程的缺点&#xff1a; 线程的用途&#xff1a; 18.4 线程与进程的联系 十九.线程控制 19.1 POSIX线程库 19.2 线程创建 19.3 线程等待 19.4 线程终止 19.5 线…

ChatGPT高效提问—prompt实践(生成VBA)

ChatGPT高效提问—prompt实践&#xff08;生成VBA&#xff09; 2. 生成VBA函数操作Excel ​ 当前Excel表格数据无背景颜色&#xff0c;区分不明显。假如我们想美化数据展示效果&#xff0c;把标题行设置为浅蓝色&#xff0c;其余奇数行设置为橙色&#xff0c;该怎么操作呢&am…

开启Android学习之旅-1

最近在学习《第一行代码 Android》&#xff0c;两天看书把所有代码都敲了一遍。由于之前没有接触过 Kotlin&#xff0c;导致了囫囵吞枣&#xff0c;跟着书会敲&#xff0c;离开就忘了。Android 大佬开发的各种框架、控件好像大部分都用了 Kotlin。看他们的源码&#xff0c;理解…

AI 消灭软件工程师?| 新程序员

【导读】“AI 是否会取代软件工程师”是自大模型爆火以来程序员们最为关心的一大话题&#xff0c;事关编程的未来与我们每一位程序员。本文作者 Babel CEO、多年的资深程序员张海龙深入技术本质&#xff0c;为我们进行了答疑解惑。 本文精选自《新程序员 007&#xff1a;大模型…

书生谱语-大语言模型测试demo

课程内容简介 通用环境配置 开发机 InterStudio 配置公钥 在本地机器上打开 Power Shell 终端。在终端中&#xff0c;运行以下命令来生成 SSH 密钥对&#xff1a; ssh-keygen -t rsa您将被提示选择密钥文件的保存位置&#xff0c;默认情况下是在 ~/.ssh/ 目录中。按 Enter …

【HTTP】localhost和127.0.0.1的区别是什么?

目录 localhost是什么呢&#xff1f; 从域名到程序 localhost和127.0.0.1的区别是什么&#xff1f; 域名的等级划分 多网站共用一个IP和端口 私有IP地址 IPv6 今天在网上逛的时候看到一个问题&#xff0c;没想到大家讨论的很热烈&#xff0c;就是标题中这个&#xff1a; …

如何把手机平板变为电脑的屏幕

文章目录 安装软件运行效果结尾 本文首发地址 https://h89.cn/archives/181.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 闲置的手机平板、触屏音箱等&#xff0c;均可作为电脑的扩展屏&#xff0c;为电脑增加一块显示屏&#xff0c;本文介绍如何使用免费的软件s…

Linux运用fork函数创建进程

fork函数&#xff1a; 函数原型&#xff1a; pid_t fork(void); 父进程调用fork函数创建一个子进程&#xff0c;子进程的用户区父进程的用户区完全一样&#xff0c;但是内核区不完全一样&#xff1b;如父进程的PID和子进程的PID不一样。 返回值&#xff1a; RETURN VALUEO…

Linux操作系统基础(十三):Linux安装、卸载MySQL

文章目录 Linux安装、卸载MySQL 一、卸载系统自带的mariadb-lib 二、上传安装包并解压 三、按顺序安装 错误1: 错误2: 错误3: 错误4: 四、初始化数据库 五、目录授权&#xff0c;否则启动失败 六、启动msyql服务 七、查看msyql服务的状态 八、在/var/log/mysqld.l…

CTFshow web(php命令执行 55-59)

web55 <?php /* # -*- coding: utf-8 -*- # Author: Lazzaro # Date: 2020-09-05 20:49:30 # Last Modified by: h1xa # Last Modified time: 2020-09-07 20:03:51 # email: h1xactfer.com # link: https://ctfer.com */ // 你们在炫技吗&#xff1f; if(isset($_GET[…

CVE-2018-19518 漏洞复现

CVE-2018-19518 漏洞介绍 IMAP协议&#xff08;因特网消息访问协议&#xff09;它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息&#xff0c;下载邮件等。它运行在TCP/IP协议之上&#xff0c;使用的端口是143。在php中调用的是imap_open函数。 PHP 的…

C++三剑客之std::optional(一) : 使用详解

相关文章系列 C三剑客之std::optional(一) : 使用详解 C三剑客之std::any(一) : 使用 C之std::tuple(一) : 使用精讲(全) C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二)&#xff1a;深入剖析 目录 1.概述 2.构建方式 2.1.默认构造 2.2.移动构造 2.3.拷贝构…

Docker容器监控-CIG

目录 一、CIG说明 1. CAdvisor 2. InfluxDB 3. Grafana 二、环境搭建 1. 创建目录 2. 编写 docker-compose.yml 3. 检查并运行容器 三、进行测试 1. 查看 influxdb 存储服务 是否能正常访问 2. 查看 cAdvisor 收集服务能否正常访问 3. 查看 grafana 展现服务&#…