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构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

flask库中sessions.py的使用小结

《flask库中sessions.py的使用小结》在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,... 目录1. Flask Session 的基本使用(1) 启用 Session(2) 存储和读取 Se