Elasticsearch 新风向:OpenAI 聊天补全功能来袭!

2024-04-20 09:37:03 浏览数 (2)

我们激动地宣布,在 Elasticsearch 的最新创新中,我们集成了 OpenAI 聊天补全功能到 Elastic 的推理 API 中。这一新特性标志着我们在将尖端 AI 功能融入 Elasticsearch 的旅程中迈出了新的一步,提供了像生成类似人类文本补全这样的易用功能。

Elastic 的持续创新精髓

Elastic 在 AI 领域投入巨大。我们最近发布了许多新特性和激动人心的集成:

  • Elasticsearch 开放推理 API 支持 Cohere 嵌入
  • 将 Elasticsearch 向量数据库引入 Azure OpenAI 服务(预览版)
  • 加速多图向量搜索

...探索 Elastic Search Labs,了解最新进展。

我们推理 API 中的新补全任务类型,以 OpenAI 作为首个支持的提供商,已经在 Elastic Cloud 的无状态产品中可用。在下一个版本中,它将对所有人开放。

使用新的补全 API

在这个简短的指南中,我们将展示如何在文档摄取期间使用推理 API 中的新补全任务类型。更多深入指南和交互式笔记本,请参考 Elastic Search Labs GitHub 仓库。

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

在 Kibana 中,您将可以访问一个控制台,无需设置 IDE 即可输入以下步骤到 Elasticsearch。

首先,配置一个模型来执行补全:

代码语言:json复制
PUT _inference/completion/openai_chat_completions
{
  "service": "openai",
  "service_settings": {
    "api_key": "<您的API密钥>",
    "model_id": "gpt-3.5-turbo"
  }
}

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

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

代码语言:json复制
POST _inference/completion/openai_chat_completions
{
  "input": "Elastic 是什么?"
}

您将得到一个状态码为 200 OK 的响应,看起来类似于以下内容:

代码语言:json复制
{
  "completion": [
    {
      "result": "Elastic 是一家提供搜索、日志、安全和分析产品及解决方案的软件公司。它的旗舰产品 Elasticsearch 是一个分布式、RESTful 的搜索和分析引擎,用于全文搜索、结构化搜索和分析。Elastic 还提供其他产品,如 Logstash(日志收集和解析)、Kibana(数据可视化和仪表板)和 Beats(轻量级数据传输器)。这些产品可以组合创建强大的数据分析和监控解决方案,适用于各种规模的组织。"
    }
  ]
}

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

代码语言:json复制
POST _bulk
{
  "index": {
    "_index": "docs"
  }
}{
  "content": "您知道,对于搜索(和分析),Elasticsearch 是 Elastic Stack 中心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据,并将其存储在 Elasticsearch 中。Kibana 使您能够交互式地探索、可视化和共享您的数据洞察,并管理和监控堆栈。Elasticsearch 是索引、搜索和分析魔法发生的地方。Elasticsearch 为所有类型的数据提供近实时的搜索和分析。无论您是否拥有结构化或非结构化文本、数值数据或地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索,聚合信息以发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够无缝地随之增长。虽然并非每个问题都是搜索问题,但 Elasticsearch 提供了处理各种用例所需的速度和灵活性:为应用程序或网站添加搜索框、存储和分析日志、指标和安全事件数据、使用机器学习实时自动建模您的数据行为、使用 Elasticsearch 作为向量数据库创建、存储和搜索向量嵌入、使用 Elasticsearch 自动化业务流程作为存储引擎、使用 Elasticsearch 管理、集成和分析空间信息作为地理信息系统(GIS)、使用 Elasticsearch 存储和处理遗传数据作为生物信息学研究工具。我们不断被人们使用搜索的新方法所惊叹。但无论您的用例是否类似于这些,或者您正在使用 Elasticsearch 解决一个新问题,您在 Elasticsearch 中与数据、文档和索引的工作方式都是相同的。"
}

为了总结多个文档,我们将使用一个包含脚本、推理和移除处理器的摄入管道,来设置我们的总结管道。

代码语言:json复制
PUT _ingest/pipeline/summarization_pipeline
{
  "processors": [
    {
      "script": {
        "source": "ctx.prompt = '请总结以下文本:'   ctx.content"
      }
    },
    {
      "inference": {
        "model_id": "openai_chat_completions",
        "input_output": {
          "input_field": "prompt",
          "output_field": "summary"
        }
      }
    },
    {
      "remove": {
        "field": "prompt"
      }
    }
  ]
}

这个管道简单地将内容前缀为“请总结以下文本:”,放在一个临时字段中,以便配置好的模型知道如何处理文本。您当然可以随意更改此文本,这将解锁许多其他流行用例,比如:

  • 问答
  • 翻译

...

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

我们现在通过调用重新索引 API 将文档(们)通过总结管道发送。

代码语言:json复制
POST _reindex
{
  "source": {
    "index": "docs",
    "size": 50
  },
  "dest": {
    "index": "docs_summaries",
    "pipeline": "summarization_pipeline"
  }
}

您的文档现在已总结完毕,准备进行搜索:

代码语言:json复制
POST docs_summaries/_search
{
  "query": {
    "match_all": {}
  }
}

就这样,您通过几个简单的 API 调用,创建了一个强大的总结管道,可以与任何摄入机制一起使用!总结在许多用例中都非常有用,例如在生成语义嵌入之前总结大块文本,或将大型文档转换为简洁的总结。这可以减少您的存储成本,提高价值实现时间,例如,如果您只对大型文档的总结感兴趣等等。顺便说一下,如果您想从二进制文档中提取文本,可以查看我们的开源数据提取服务!

激动人心的未来

但我们不会就此止步。我们已经开始将 Cohere 的聊天作为我们 completion 任务的另一个提供商进行集成。我们也在积极探索与补全 API 结合的新检索和摄入用例。现在就将 Elastic Search Labs 加入书签,以保持最新动态!

0 人点赞