Elasticsearch 开放 inference API 增加了对 OpenAI chat completions 的支持

作者:Tim Grein

我们很高兴地宣布在 Elasticsearch 中推出的最新创新:在 Elastic 的 inference API 中集成了 OpenAI Chat Completions 功能。这一新特性标志着我们在整合尖端人工智能能力至 Elasticsearch 的旅程中又迈出了一步,提供了生成类人文本完成等更多易于使用的功能。

更多关于 OpenAI Chat Completions 的用法,请阅读文章 “ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(二)”

Elastic 持续创新的本质

Elastic 在所有的人工智能领域都进行了大量投资。我们最近发布了许多新功能和令人振奋的集成:

  • Elasticsearch 的开发 inference API 增加了对 Cohere 嵌入的支持
  • 引入 Elasticsearch 向量数据库到 Azure OpenAI 服务的数据上(预览版)
  • 加速多图向量搜索
  • ……探索更多 Elasticsearch labs 的内容,了解最近的发展情况。

我们的 inference API 中的新 completion 任务类型,作为第一个支持提供商,已经在我们的 Elastic Cloud 的 stateless 提供中可用。它将很快在我们的下一个版本中向所有人提供。

使用新的 completion API

在这个简短的指南中,我们将展示如何在文档摄入过程中使用 inference API 中的新 completion task 类型的简单示例。请参考 Elastic Search Labs 的 GitHub 仓库以获取更深入的指南和交互式笔记本。

要使以下指南工作,你需要拥有一个活跃的 OpenAI 账户并获取一个 API 密钥。请参考 OpenAI 的快速启动指南了解你需要遵循的步骤。你可以选择 OpenAI 的多种模型中的一种。在以下示例中,我们使用了 gpt-3.5-turbo

在 Kibana 中,你将可以使用控制台输入以下步骤到 Elasticsearch,无需设置 IDE。

首先,你需要配置一个将执行 completion 任务的模型:

PUT _inference/completion/openai_chat_completions
{"service": "openai","service_settings": {"api_key": <api-key>,"model_id": "gpt-3.5-turbo"}
}

运行此命令后,你应该会看到相应的 200 OK 状态,表明模型已正确设置,可以对任意文本进行推理。

现在,你可以调用配置的模型对任意文本输入进行推理:

POST _inference/completion/openai_chat_completions
{"input": "What is Elastic?"
}

你将收到一个类似于下面的带有状态码 200 OK 的响应:

{"completion": [{"result": "Elastic is a software company that provides a range of products and solutions for search, logging, security, and analytics. Its flagship product, Elasticsearch, is a distributed, RESTful search and analytics engine that is used for full-text search, structured search, and analytics. Elastic also offers other products such as Logstash for log collection and parsing, Kibana for data visualization and dashboarding, and Beats for lightweight data shippers. These products can be combined to create powerful data analysis and monitoring solutions for organizations of all sizes."}]
}

下一个命令创建了一个示例文档,我们将使用刚刚配置的模型对其进行总结:

POST _bulk
{ "index" : { "_index" : "docs" } }
{"content": "You know, for search (and analysis) Elasticsearch is the distributed search and analytics engine at the heart of the Elastic Stack. Logstash and Beats facilitate collecting, aggregating, and enriching your data and storing it in Elasticsearch. Kibana enables you to interactively explore, visualize, and share insights into your data and manage and monitor the stack. Elasticsearch is where the indexing, search, and analysis magic happens. Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch can efficiently store and index it in a way that supports fast searches. You can go far beyond simple data retrieval and aggregate information to discover trends and patterns in your data. And as your data and query volume grows, the distributed nature of Elasticsearch enables your deployment to grow seamlessly right along with it. While not every problem is a search problem, Elasticsearch offers speed and flexibility to handle data in a wide variety of use cases: Add a search box to an app or website Store and analyze logs, metrics, and security event data Use machine learning to automatically model the behavior of your data in real time Use Elasticsearch as a vector database to create, store, and search vector embeddings Automate business workflows using Elasticsearch as a storage engine Manage, integrate, and analyze spatial information using Elasticsearch as a geographic information system (GIS) Store and process genetic data using Elasticsearch as a bioinformatics research tool We’re continually amazed by the novel ways people use search. But whether your use case is similar to one of these, or you’re using Elasticsearch to tackle a new problem, the way you work with your data, documents, and indices in Elasticsearch is the same."}

为了总结多个文档,我们将使用一个 ingest pipeline,其中包含脚本处理器、推理处理器和删除处理器,来设置我们的摘要管道。

PUT _ingest/pipeline/summarization_pipeline
{"processors": [{"script": {"source": "ctx.prompt = 'Please summarize the following text: ' + ctx.content"}},{"inference": {"model_id": "openai_chat_completions","input_output": {"input_field": "prompt","output_field": "summary"}}},{"remove": {"field": "prompt"}}]
}

该管道简单地在内容中加上了指令 “Please summarize the following text: ”,放在一个临时字段中,这样配置的模型就知道该如何处理文本了。当然,你可以根据需要更改这个文本,这就可以解锁各种其他流行的用例:

  • 问答
  • 翻译
  • ...等等!

管道在执行推理后删除临时字段。

现在,我们通过调用 reindex API 将我们的文档(们)通过摘要管道发送出去。

POST _reindex
{"source": {"index": "docs","size": 50},"dest": {"index": "docs_summaries","pipeline": "summarization_pipeline"}
}

你的文档现已被总结,可以进行搜索了。

POST docs_summaries/_search
{"query": {"match_all": { }}
}

这就是全部内容了, 你只需通过几个简单的 API 调用就创建了一个强大的摘要化流水线,可与任何摄取机制一起使用!摘要化非常实用,例如在生成语义嵌入或将大段文本转换为简洁摘要之前,对大段文本进行摘要化。这可以降低存储成本,提高价值交付速度,例如,如果你只对大型文档的摘要感兴趣等。顺便说一句,如果你想从二进制文档中提取文本,可以查看我们的开源数据提取服务!

前景令人兴奋

但我们不会止步于此。我们正在将 Cohere 的聊天功能作为我们的 completion 任务的另一个提供商进行整合。我们还在积极探索与 completion API 结合的新的检索和摄取用例。现在就将 Elastic Search Labs 加入书签,随时获取最新信息!

准备在你的应用中构建 RAG 吗?想尝试使用向量数据库的不同 LLMs 吗? 请查看我们在 Github 上的 LangChain、Cohere 等样本 notebooks,并加入即将开始的 Elasticsearch 工程师培训!

原文:Elasticsearch open inference API adds support for OpenAI chat completions — Elastic Search Labs

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

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

相关文章

凭证自动拆分

凭证自动拆分 一、设置拆分中间科目 OBX2配置凭证拆分的中间科目 二、销售开票凭证拆分 SE18创建BADI "FI_BILL_ISSUE_SPLIT"的实施 修改实施类&#xff1a;ZCL_FI_BILL_ISSUE_SPLIT中IF_EX_FI_BILL_ISSUE_SPLIT~ACTIVATE_AUTOMATIC_SPLIT方法&#xff0c;代码…

ruoyi-vue前端的一些自定义插件介绍

文章目录 自定义列表$tab对象打开页签关闭页签刷新页签 $modal对象提供成功、警告和错误等反馈信息&#xff08;无需点击确认&#xff09;提供成功、警告和错误等提示信息&#xff08;类似于alert&#xff0c;需要点确认&#xff09;提供成功、警告和错误等提示信息&#xff08…

vue 的生命周期--图解

生命周期函数中的this指向是vm 或 组件实例对象。 常用的生命周期钩子&#xff1a; mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 销毁后借助Vu…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作 2.稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排…

MATLAB设置变量

您可以通过简单的方式分配变量。例如&#xff0c; 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵&#xff0c;并将值3存储在其元素中。再举一个实例&#xff0c; 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

自动化测试Selenium(3)

目录 WebDriver相关API 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器的宽,高 操作浏览器的前进, 后退, 刷新 控制浏览器滚动条 键盘事件 键盘单键用法 键盘组合按键用法 鼠标事件 WebDriver相关API 打印信息 打印title 即打印该网址的标题.…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

css-Echarts图表初始显示异常非完全显示

1.echarts图表初始加载异常 2.问题原因 初次加载时&#xff0c;由于外层使用%比 echarts dom元素没有完全加载完成&#xff0c;canvas绘画继承本身宽高&#xff0c;造成Echarts图表初始显示异常非完全显示。 3.使用echarts图表可参考以下代码&#xff08;实现一定的自适应&am…

MyBatis 核心配置讲解(上)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成&#xff0c;到这里基础篇的内容就结束了。 从今天开始&#xff0c;我们正式进入 MyBatis 学习的第二阶段&#xff1a;MyBatis 的…

【Qt 学习笔记】Qt常用控件 | 显示类控件LCD Number的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件LCD Number的使用及说明 文章编号&#xff1a…

stm32中的中断优先级

在工作中使用到多个定时器中断,由于中断的中断优先级不熟悉导致出错,下面来写一下中断的一些注意事项。 一、中断的分类 1、EXTI外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等。外部中断用于响应外部事件,并及时处理相关任务。 2、内部中断:…

Matlab对多个输入信号进行数值排序提取特定值

1、将多个信号转为一个数组信号输出&#xff0c;在这里需要注意&#xff0c;数据类型是否统一&#xff1b; 2、使用Sort模块&#xff0c;进行排序&#xff08;可设置排序方向&#xff09;&#xff0c;得到排序后的新数组以及对应的索引号&#xff1b; 3、设置想要的索引号&…

12.事件参数

事件参数 事件参数可以获取event对象和通过事件传递数据 获取event对象 <template><button click"addCount">Add</button><p>Count is: {{ count }}</p> </template> <script> export default {data() {return {count:0…

6.SpringBoot 日志文件

文章目录 1.日志概述2.日志作用3.使用和观察日志3.1如何观察日志3.2使用日志3.3日志级别3.4日志持久化3.5日志分割 4.日志框架4.1门面模式(外观模式)4.2 SLF4J框架介绍4.3 日志格式的说明4.3.1日志名称 5.日志颜色设置6.总结 大家好&#xff0c;我是晓星航。今天为大家带来的是…

SpringMvc的核心组件和执行流程

一、 springmvc的核心组件及作用 1.DispatcherServlet:前置控制器&#xff0c;是整个流程控制的核心&#xff0c;用来控制其他组件的执行&#xff0c;降低了其他组件的耦合性 2.Handler:控制器&#xff0c;完成具体的业务逻辑&#xff0c;当DispatcherServlet接收到请求后&am…

Pages by User Role for WordPress:强化内容访问控制的必备插件

在数字化时代&#xff0c;WordPress已成为众多网站开发者和设计师的首选平台。然而&#xff0c;如何根据用户角色精确控制内容的访问权限&#xff0c;一直是困扰他们的难题。Pages by User Role for WordPress插件应运而生&#xff0c;为这一难题提供了完美的解决方案。 Pages …

力扣HOT100 - 23. 合并K个升序链表

解题思路&#xff1a; 只要会合并两个升序链表&#xff0c;合并K个做法类似。 class Solution {public ListNode mergeKLists(ListNode[] lists) {ListNode res null;for (int i 0; i < lists.length; i) {res merge(res, lists[i]);}return res;}public ListNode merg…

使用动画做一个走马灯的案例

走马灯 1.第一步-搭建环境 先搭建父盒子。父盒子里面再放入一个子盒子用来装7张图片&#xff0c;有因为图片在一行上了&#xff0c;所以需要使用flex布局。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…

【人工智能基础】知识表示和专家系统

目录 一、知识 知识 产生式表示法 产生式表示形式 确定的事实性知识的产生式表示 不确定的事实性知识的产生式表示 确定的规则知识的产生式表示 不确定的规则知识的产生式表示 产生式系统构成 优点 缺点 语义网络 优点 缺点 框架 框架的一般结构 框架的继承 优…

golang本地缓存库之bigcache

1. 前言 上周工作之余逛github看到一个本地缓存库bigcache&#xff0c;这个是allegro公司开源的一个项目&#xff0c;主要是用于本地缓存使用&#xff0c;根据他们的博客说明&#xff0c;他们编写这个库最初的目的就是实现一个非常快速的缓存服务。 看了下bigcache这个库的源…