Elastic Search 8.14:更快且更具成本效益的向量搜索,使用 retrievers 和重新排序提升相关性,RAG 和开发工具

本文主要是介绍Elastic Search 8.14:更快且更具成本效益的向量搜索,使用 retrievers 和重新排序提升相关性,RAG 和开发工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:来自 Elastic Yaru Lin, Ranjana Devaji

我们致力于突破搜索开发的界限,并专注于为搜索构建者提供强大的工具。通过我们的最新更新,Elastic 对于处理以向量表示的大量数据的客户来说变得更加强大。这些增强功能保证了更快的速度、降低的存储成本以及软件和硬件之间的无缝集成。

Elastic Search 8.14 现已在 Elastic Cloud 上推出,这是唯一包含最新版本中所有新功能的托管 Elasticsearch 产品。你还可以下载 Elastic Stack 和我们的云编排产品(Elastic Cloud Enterprise 和 Elastic Cloud for Kubernetes),以获得自我管理的体验。

Elastic 8.14 中还有哪些新功能?查看 8.14 公告帖子了解更多信息。

带来极快的向量搜索

在我们的使命中,为搜索构建者提供最强大的开发平台,现在使用向量进行数十亿规模操作的客户可以在 Elastic 中获得更多的效益。我们的更新显著提升了向量索引和搜索速度,降低了存储成本,并提供了软件和硬件之间的协同作用。

我们对计算向量之间距离的代码库进行了改进,这使得处理向量数据时的二进制比较速度比 Lucene 的实现快了多达 6 倍。这一优化对向量搜索速度产生了显著影响。

Elasticsearch 的 Python 客户端现在支持 orjson,这是基准测试中最快的 Python JSON 库,可以使numpy向量的索引速度提高多达 10 倍。

标量量化允许以稍微降低的保真度编码向量,但能大幅节省空间。在创建带有向量的新索引时,不再需要先将索引类型设置为 int8_hnsw。相反,将默认使用 int8向量值,为用户提供成本效益高且准确的向量搜索。我们的系统评估发现,标量量化对检索性能的影响微乎其微。

在 Elastic Cloud 上使用向量搜索的客户,无论使用哪家云服务提供商,都可以利用为向量优化的硬件配置文件以获得最佳的软件性能。这些硬件配置文件现在不仅在 AWS 上可用,还在 Azure 和 GCP 上提供。

用检索器和重新排序使搜索相关性普及

检索器(retrievers)和重新排名(reranking)在提高搜索结果的相关性和准确性方面发挥着至关重要的作用。我们的更新对向量搜索用户和使用更传统模型(例如 BM25)的用户都有影响。

我们将检索器(retrievers)抽象添加到 _search API,以便使用 standard、knn 或 rrf 方法返回热门命中。这使用户能够更轻松地构建复杂的多阶段检索,而无需复杂的管道。

例如,要一起使用 KNN 和 BM25 检索方法,不再需要使用管道定义阶段来执行 KNN 搜索、检索结果的 ID,然后对所述 ID 执行 BM25 搜索。相反,检索器树可以直接构建到搜索查询中:

GET index/_search
{"retriever": {"rrf": {"window_size": 100,"retrievers": [{"knn": {"field": "vector","k": 3,"num_candidates": 10,"query_vector": [1, 2, 3]}},{"standard": {"query": {"match": {"message": {"query": "{{query_string}}"    }}}}}]}},"size": 5,"fields": ["message"]
}

对检索到的文档重新排序可以通过返回与搜索查询相关的文档的相关性排名来进一步提高相关性。重新排名有效地向所有用户提供语义搜索:RAG 系统将能够依赖于上下文最相关的顶部结果,而传统搜索(例如 BM25)将能够将最相关的结果显示在顶部。

Elastic 是唯一支持 Cohere Rerank 3 模型的向量数据库,并通过我们的 _inference API 无缝地使用该模型进行重新排名,无需复杂的多个查询或重新索引文档。要使用 Cohere 模型对检索结果重新排序,请首先配置推理端点:

PUT _inference/rerank/cohere_rerank {"service": "cohere","service_settings": {"api_key": <API-KEY>, "model_id": "rerank-english-v3.0"},"task_settings": {"top_n": 10,"return_documents": true}}

指定推理端点后,通过传入用于检索的原始查询以及搜索检索到的文档,使用它对结果进行重新排序。

POST _inference/rerank/cohere_rerank{"input": [{{query_results}}], "query": "{{query_string}}" }

提升 RAG 体验

我们最新的工具和增强功能旨在提升 RAG 体验。 Playground 和带有 Jupyter Notebook 的开发控制台都使用户能够快速实验、改进和迭代。

在 Playground 中,开发人员可以选择从多个第三方数据源提取的多个索引来试验和完善语义文本查询、导出生成的代码,并最终设计会话式搜索体验。这简化了 RAG 实施,并允许使用 Elasticsearch 数据快速构建聊天体验原型,以支持 LLM 响应。

可嵌入开发控制台(Dev Console)现在在 Kibana 中随处可见,可通过预先填充的上下文代码片段以及 Jupyter Notebook 来快速启动查询开发。

我们增加了对从 Azure OpenAI 获取嵌入的支持,解锁高级 AI 功能并丰富 RAG 的功能和见解。 OpenAI 完成任务现已在推理处理器中可用,简化了生成智能响应的工作流程并提高了 RAG 交互的整体效率。

工具增强可更有效地处理数据

高效地将数据加载到 Elastic 中并在其中处理数据的能力对于维护有效的搜索应用程序至关重要。这些增强功能允许用户根据其特定需求定制服务并简化开发和运营流程:

  • 使用 ES|QL 轻松执行查询并将结果自动转换为 Java 对象和 PHP 对象。
  • 数据提取服务是开放代码。
  • GraphQL 连接器现已处于技术预览阶段。 GraphQL 支持声明式数据获取,客户端可以从 API 中准确指定所需的数据。
  • Connector API 现已处于测试阶段。
  • 支持 GitHub Connector 的 GitHub App 身份验证。

试试看

请阅读发行说明中了解这些功能以及更多信息。

现有 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台访问其中许多功能。没有利用云上的 Elastic?开始免费试用。

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。当前不可用的任何特性或功能可能无法按时交付或根本无法交付。

在这篇博文中,我们可能使用或引用了第三方生成人工智能工具,这些工具由其各自所有者拥有和运营。 Elastic 对第三方工具没有任何控制权,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害负责。使用人工智能工具处理个人、敏感或机密信息时请务必谨慎。你提交的任何数据都可能用于人工智能培训或其他目的。无法保证你提供的信息将得到安全或保密。在使用之前,你应该熟悉任何生成式人工智能工具的隐私惯例和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 和相关标志是 Elasticsearch N.V. 的商标、徽标或注册商标。在美国和其他国家。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

原文:Elastic Search 8.14: Faster and more cost-effective vector search, improved relevance with retrievers and reranking, RAG and developer tooling | Elastic Blog

这篇关于Elastic Search 8.14:更快且更具成本效益的向量搜索,使用 retrievers 和重新排序提升相关性,RAG 和开发工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036660

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma