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

相关文章

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指