使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持

📅 2026/8/4 16:18:12
使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持
作者来自 Elastic Tim GreinOpenAI Chat Completions 已集成到 Elastic 的 inference API 中。此功能标志着我们在 Elasticsearch 中集成先进 AI 能力的旅程又迈出了重要一步为用户提供了更多易于使用的功能例如生成类人的文本补全。本文介绍如何结合使用 OpenAI chat completions 和 Elasticsearch对任意文本进行摘要、翻译或执行问答。在开始之前让我们快速了解一下 Elastic 最近推出的功能和集成。Elastic 持续创新的本质Elastic 在所有 AI 领域投入大量资源。我们最近发布了许多新功能和令人兴奋的集成Elasticsearch open inference API 增加了对 Cohere Embeddings 的支持将 Elasticsearch 向量数据库引入 Azure OpenAI Service On Your Data预览版加速多图向量搜索……探索更多 Elastic Search Labs了解最新进展我们 inference API 中新的 completion 任务类型目前以 OpenAI 作为第一个后端提供商已经可以在 Elastic Cloud 的无状态产品中使用。它将在下一版本中很快向所有用户开放。使用 Elasticsearch 的 open inference API 调用 OpenAI chat completions在这个简短指南中我们将展示一个简单示例说明如何在文档摄取过程中使用 inference API 中新的 completion 任务类型。有关更深入的指南和交互式 notebook请参考 Elastic Search Labs GitHub 仓库。要使以下指南正常运行你需要拥有一个有效的 OpenAI 账号并获取 API key。请参考 OpenAI 的快速入门指南了解需要执行的步骤。你可以从 OpenAI 的多种模型中进行选择。在下面的示例中我们使用了gpt-3.5-turbo。在 Kibana 中你可以访问一个控制台在 Elasticsearch 中输入以下步骤而无需设置 IDE。首先你需要配置一个模型该模型将执行 completionPUT _inference/completion/openai_chat_completions { service: openai, service_settings: { api_key: api-key, model_id: gpt-3.5-turbo } }运行此命令后你应该看到对应的200 OK状态表示该模型已经正确设置可以对任意文本执行 inference。现在你可以调用已配置的模型对任意文本输入执行 inferencePOST _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... } ] }下一条命令会创建一个示例文档我们将使用刚刚配置的模型对其进行摘要POST _bulk { index : { _index : docs } } {content: ...}为了对多个文档进行摘要我们将结合 ingest pipeline 以及 script、inference 和 remove processor 来设置我们的摘要流水线。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: ” 添加到临时字段中的内容前面使配置好的模型知道应该如何处理文本。当然你可以将这段文本修改为任何你想要的内容从而解锁其他许多常见用例问答翻译……以及更多流水线会在执行 inference 后删除临时字段。现在我们通过调用 reindex API让文档通过摘要流水线POST _reindex { source: { index: docs, size: 50 }, dest: { index: docs_summaries, pipeline: summarization_pipeline } }你的文档现在已经完成摘要并可以进行搜索POST docs_summaries/_search { query: { match_all: { } } }基本上就是这样你只通过几个简单的 API 调用就创建了一个强大的摘要流水线并且可以将其用于任何摄取机制有很多场景都适合使用摘要例如在生成语义 embedding 之前对大型文本进行摘要或者将大型文档转换为简洁摘要。这可以降低存储成本提高价值实现速度例如当你只关注大型文档的摘要时。顺便提一下如果你想从二进制文档中提取文本可以查看我们的开源数据提取服务原文OpenAI chat completions with Elasticsearchs open inference API | Elasticsearch Labs