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

news2024/9/20 2:53:39

作者: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.coloradmin.cn/o/1612180.html

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

相关文章

新时代电子包浆!安利一款 PDF 办公利器,瞬间扫描效果,2.2k star开源了【文末带私活源码】

在日常工作学习中&#xff0c;我们经常需要处理各种 PDF 文档。有时&#xff0c;我们需要将电子版文档转换成扫描版&#xff0c;以满足特定需求&#xff0c;例如模拟真实签字、增加文件可信度等。传统的扫描方法需要借助打印机和扫描仪&#xff0c;不仅操作繁琐&#xff0c;而且…

OpenHarmony网络协议通信—kcp

kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径&#xff1a;./third_party/kcp 修改添加依赖的编译脚本 在/develo…

牛客NC251 多数组第 K 小数【 中等 双指针 C++、Java、Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/41796daa4c7e4e5ab984b2c16c24a1de 思路 双指针参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可*** param arr1 int整…

【python】深度解剖!一文搞懂字符串常用功能

【python】深度解剖!一文搞懂字符串常用功能 【先赞后看养成习惯】求点赞+关注+收藏😀 目录 【python】深度解剖!一文搞懂字符串常用功能字符串的创建:字符串的格式化——占位符.format方法字符串的分割字符串的连接字符串的重复字符串的大小写转换字符串的判断字符串的…

STL分解

效果图 ref&#xff1a;时序数据分析的利器——STL分解 - 知乎 (zhihu.com)

linux18:进程等待

进程等待的必要性 1&#xff1a;子进程创建的目的是要完成父进程指派的某个任务&#xff0c;当子进程运行完毕退出时&#xff0c;父进程需要通过进程等待的方式&#xff0c;回收子进程资源&#xff0c;获取子进程退出信息&#xff08;子进程有无异常&#xff1f;没有异常结果是…

Cpp_SDay02

空山新雨后&#xff0c;天气晚来春 文章目录 前言一、No File&#xff01;&#xff01;&#xff01;二、preProcessing三、static的用意&#xff1a;四、signed number /unsigned number五、函数六、#pragma once总结 前言 看视频令人犯困&#xff0c; 一、No File&#xff01…

Vue3基本功能介绍

文章目录 Vue3组件中的模板结构可以没有根标签div组合式APIRefReactive函数回顾Vue2响应式Vue3实现响应式对比reactive和refSetup注意点计算属性与监听computedWatchWatchEffectVue3生命周期自定义hook函数toRef其他组合APIshallowReactiveshallowRefreadonly和shallowOnlyToRa…

SRIO系列-时钟逻辑与复位逻辑

一、前言 上一篇讲述了SRIO协议的基本概念&#xff0c;传输的HELLO帧格式、事务类型等&#xff0c;本篇说一下SRIO IP核的时钟关系。 基本的IP设置可以参考此篇文章&#xff1a;【高速接口-RapidIO】Xilinx SRIO IP 核详解-CSDN博客 二、时钟关系 PHY可以在两个时钟域上运行…

ubuntu下boa服务器编译运行

一.下载boa源码并解压 官网网站&#xff1a;BOA源码 点击箭头所指的位置即可下载 解压&#xff1a; tar -xvf boa-0.94.13.tar.gz 解压完成得到目录&#xff1a; 二.安装环境所缺依赖&#xff0c;否则编译会报错 sudo apt install bison sudo apt install flex 三.编译 1…

vue快速入门(三十五)组件通信-父传子

注释很详细&#xff0c;直接上代码 上一篇 新增内容 父组件传值子组件接收父组件传来的数据 源码 App.vue <template><div id"app"><!-- :item"item"为将item的值传递给MyTest组件 --><MyTest v-for"item in roles" :key&q…

【Linux开发 第七篇】权限

权限 Linux组权限修改权限 Linux组 在linux中的每个用户必须属于一个组&#xff0c;不能独立于组外 文件/目录 所有者 一般为文件的创建者&#xff0c;谁创建了该文件&#xff0c;就自然的成为了该文件的所有者 这一列即为文件的所有者 修改文件的所有者&#xff1a; chown…

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 一、检查服务是否开启 找到 【Docker Desktop Service】&#xff0c;然后&#xff0c;启动他&#xff1b; 你也可以直接设置为“自动” 找到服务&#xff0c;右键》属性》启动类型&#xff1a;自动》点击…

经典目标检测YOLOV1模型的训练及验证

1、前期准备 准备好目录结构、数据集和关于YOLOv1的基础认知 1.1 创建目录结构 自己创建项目目录结构&#xff0c;结构目录如下&#xff1a; network CNN Backbone 存放位置 weights 权重存放的位置 test_images 测试用的图…

Java多线程并发八股问题总结

目录 (1).Java中实现线程的方法(2).如何停止一个正在运行的线程(3).notify和notifyAll有什么区别(4).sleep()和wait()有什么区别(5).volatile是什么&#xff1f;可以保证有序性吗&#xff1f;(6).Thread类中的start()和run方法有什么区别&#xff1f;(7).为什么wait、notify、n…

面试经典150题——跳跃游戏 II

面试经典150题 day10 题目来源我的题解方法一 动态规划方法二 贪心 题目来源 力扣每日一题&#xff1b;题序&#xff1a;45 我的题解 方法一 动态规划 动态规划&#xff0c;当j位置可达i位置时&#xff1a;dp[i]Math.min(dp[i],dp[j]1); 时间复杂度&#xff1a;O( n 2 n^2 n…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月21日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年4月21日 星期日 农历三月十三 1、 商务部等10部门联合发文&#xff1a;进一步支持境外机构投资境内科技型企业。 2、 第二艘国产大型邮轮下坞搭载建造&#xff0c;预计2026年底前交付&#xff0c;中国邮轮开启批量化建造…

Python-VBA函数之旅-hash函数

目录 一、hash函数的定义&#xff1a; 二、hash函数的工作方式&#xff1a; ​三、hash函数的优缺点&#xff1a; 四、hash函数的常见应用场景&#xff1a; 1、hash函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&…

Efficient Subclass Segmentation in Medical Images论文速读

Efficient Subclass Segmentation in Medical Images 摘要 随着医学图像分析的研究兴趣越来越细化&#xff0c;大量注释的成本也在上升。降低成本的一种可行方法是使用粗粒度超类标签进行注释&#xff0c;同时使用有限的细粒度注释作为补充。通过这种方式&#xff0c;细粒度的…

BAPI_BATCH_CHANGE:修改批次的特征值

文章目录 BAPI_BATCH_CHANGE&#xff1a;修改批次的特征值实现步骤定义变量获取对象/类等 获取已维护特性值新特性值更新 注意事项最终效果字段介绍 BAPI_BATCH_CHANGE&#xff1a;修改批次的特征值 现在有一个需求是要修改批次里面的某一个特征值&#xff0c;所以需要使用到B…