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.hqwc.cn/news/465726.html

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

相关文章

MATLAB知识点:矩阵的除法

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.2 算术运算 下面我们再来介绍矩阵的除法。事…

Python自学之路:从入门到精通

一、引言 Python,作为最受欢迎的编程语言之一,不仅语法简洁易懂,而且应用领域广泛,从数据科学、机器学习、网络开发到自动化脚本编写等,无所不能。对于初学者来说,如何系统地自学Python可能会是一个挑战。…

Linux操作系统下安装消息中间件RabbitMQ_00000

下载 在官网下载Linux版RabbitMQ安装文件。 erlang-21.3-1.el7.x86_64.rpm rabbitmq-server-3.8.8-1.el7.noarch.rpm 安装 1、将文件上传至Linux系统中。 上传到/usr/local/software目录下(如果没有software目录,则创建。)。 2、安装文件&…

PySpark(四)PySpark SQL、Catalyst优化器、Spark SQL的执行流程、Spark新特性

目录 PySpark SQL 基础 SparkSession对象 DataFrame入门 DataFrame构建 DataFrame代码风格 DSL SQL SparkSQL Shuffle 分区数目 DataFrame数据写出 Spark UDF Catalyst优化器 Spark SQL的执行流程 Spark新特性 自适应查询(SparkSQL) 动态合并 动态调整Join策略 …

如何利用IP定位技术锁定网络攻击者

在当今高度互联的数字世界中,网络安全威胁日益猖獗。为了维护网络空间的安全与稳定,追踪并锁定网络攻击者成为了关键一环。而IP定位技术,作为一种重要的追踪手段,正发挥着越来越重要的作用。 IP定位技术,简而言之&…

《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程(About This Course)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…

python-分享篇-GUI界面开发-PyQt5-对QListWidget列表进行数据绑定

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file bindlist.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 对QListWidget列表进行数据绑定from PyQt5 import QtCore, QtG…

Python - 面向对象编程 - 实例方法、静态方法、类方法

实例方法 在类中定义的方法默认都是实例方法,前面几篇文章已经大量使用到实例方法 实例方法栗子 class PoloBlog:def __init__(self, name, age):print("自动调用构造方法")self.name nameself.age agedef test(self):print("一个实例方法&…

【前端web入门第五天】02 盒子模型基础

文章目录: 1.盒子模型的组成 1.1盒子模型重要组成部分1.2 盒子模型-边框线1.3 盒子模型–内边距 1.3.1 盒子模型–内边距-多值写法 1.4 盒子模型–尺寸计算 1.5 盒子模型-版心居中 1.盒子模型的组成 不同组件之间的空白就是盒子模型的功劳 作用:布局网页,摆放盒子…

【C语言】实现单链表

目录 (一)头文件 (二)功能实现 (1)打印单链表 (2)头插与头删 (3)尾插与尾删 (4) 删除指定位置节点 和 删除指定位置之后的节点 …

【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】

文章目录: 1.清除默认样式 1.1清除内外边距1.2清除列表圆点(项目符号) 3.外边距问题-合并现象4.外边距问题–塌陷问题5.行内元素垂直内外边距6.圆角与盒子阴影 6.1圆角 6.2 盒子模型-阴影(拓展) 综合案例一 产品卡片 综合案例二 新闻列表 1.清除默认样式 在实际设计开发中,要…

分享88个时间日期JS特效,总有一款适合您

分享88个时间日期JS特效,总有一款适合您 88个时间日期JS特效下载链接:https://pan.baidu.com/s/16UhIi4d42AkUN5uj2oGFFw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,…