推理处理
Elastic Stack 无服务器
当您通过 Content UI 创建索引时,也会创建一组默认的摄取管道,包括机器学习推理管道。ML 推理管道使用推理处理器来分析字段并使用输出来丰富文档。 推理处理器使用 ML 训练模型,因此您需要使用内置模型或在您的集群中部署训练模型才能使用此功能。
本指南侧重于 ML 推理管道、其使用以及如何管理它。
此功能并非在所有 Elastic 订阅级别都可用。有关详细信息,请参阅 Elastic 订阅页面,了解 Elastic Cloud 和 自管理部署。
自然语言处理 (NLP)使开发人员能够创建超越词汇搜索标准的丰富搜索体验。以下是一些通过使用 NLP 模型改进搜索体验的方法示例
使用 Elastic 的 ELSER 机器学习模型,您可以轻松地将文本扩展功能合并到您的查询中。这通过在提取时使用 ELSER 来提供对您的文档的语义丰富,并结合 Elastic Search Application templates 的强大功能,以在查询时提供自动文本扩展。
通常用于从文本中检测实体(例如人员、地点和组织信息),NER 可用于从文本中提取关键信息并基于该信息对结果进行分组。体育新闻媒体网站可以使用 NER 自动提取其文章中职业运动员、体育场和运动队的名称,并链接到赛季统计数据或赛程表。
文本分类通常用于情绪分析,并且可用于类似的任务,例如将公共论坛中的内容标记为包含仇恨言论,或对支持请求进行分类和标记,以便它们自动达到正确的升级级别。
使用 文本嵌入模型分析文本字段将生成文本的 密集向量表示。 此数值数组编码文本的语义含义。 将同一模型与用户的搜索查询一起使用将生成一个向量,然后可以使用该向量来搜索,基于向量相似性(语义相似性)而不是传统的单词或文本相似性对结果进行排名。
一个常见的用例是用户搜索常见问题解答,或者支持代理搜索知识库,其中语义相似的内容可能被索引,但在措辞上几乎没有相似之处。
下图显示了在提取期间如何处理文档。

- 文档由
my-index-0001
管道处理,该管道在通过 Elastic 连接器或爬网程序建立索引时会自动发生。 _run_ml_inference
字段设置为true
以确保 ML 推理管道 (my-index-0001@ml-inference
) 已执行。 在提取过程中,此字段将被删除。- 推理处理器使用
my-positivity-model-id
训练模型来分析文档上的message
字段。 推理输出存储在ml.inference.positivity_prediction
字段中。 - 然后,将生成的已丰富文档索引到
my-index-0001
索引中。 - 现在可以在查询时使用
ml.inference.positivity_prediction
字段来搜索高于或低于特定阈值的文档。
此功能旨在使您更容易使用您的 ML 训练模型。 首先,您需要确定哪种模型最适合您的数据。 请确保使用兼容的第三方 NLP 模型。 由于这些模型是公开可用的,因此无法在部署它们之前对模型进行微调。
训练模型必须在当前 Kibana 空间中可用并正在运行才能使用它们。 默认情况下,模型应在启用了 Analytics > Machine Learning 功能的所有 Kibana 空间中可用。 要管理您的训练模型,请使用 Kibana UI 并导航到 Stack Management → Machine Learning → Trained Models。 可以在 spaces 列中控制空间。 要停止或启动模型,请转到 Kibana 的 Analytics 菜单中的 Machine Learning 选项卡,然后单击 Model Management 部分中的 Trained Models。
需要 monitor_ml
Elasticsearch 集群特权来管理 ML 模型和使用这些模型的 ML 推理管道。
要创建特定于索引的 ML 推理管道,请在 Kibana UI 中转到 Search → Content → Indices → <您的索引> → Pipelines。
如果仅看到 search-default-ingestion
管道,则需要单击 Copy and customize 来创建特定于索引的管道。 这将创建 {{index_name}}@ml-inference
管道。
准备好特定于索引的 ML 推理管道后,您可以添加使用您的 ML 训练模型的推理处理器。 要将推理处理器添加到 ML 推理管道,请单击 Machine Learning Inference Pipelines 卡中的 Add Inference Pipeline 按钮。

在这里,您可以
为您的管道选择一个名称。
- 此名称需要在整个部署中是唯一的。 如果您希望此管道是特定于索引的,我们建议在管道名称中包含您的索引名称。
- 如果您未设置管道名称,则在选择训练模型后将提供默认唯一名称。
选择您要使用的 ML 训练模型。
- 必须先部署模型,然后才能选择它。 要开始部署模型,请单击 Deploy 按钮。
选择一个或多个源字段作为推理处理器的输入。
- 如果没有可用的源字段,您的索引需要进行字段映射。
(可选)为您的目标字段选择一个名称。 这是推理模型的输出将存储的位置。 只有在选择单个源字段时,才能更改默认名称。
单击添加按钮,将源-目标字段映射添加到配置中。
针对要添加的每个字段映射,重复步骤 3-5。
(可选)使用示例文档测试管道。
(可选)在使用创建管道按钮创建管道之前,查看管道定义。
添加到特定于索引的 ML 推理管道中的推理处理器是普通的 Elasticsearch 管道。 创建后,每个处理器都将具有在 Stack Management 中查看和删除管道选项。 从内容 UI 中删除推理处理器会删除管道,并将其从特定于索引的 ML 推理管道中删除。
这些管道也可以在 Kibana 中通过Stack Management → Ingest Pipelines查看、编辑和删除,就像所有其他 Elasticsearch 采集管道一样。 您也可以使用采集管道 API。 如果在 Kibana 的内容 UI 之外删除任何这些管道,请确保编辑引用它们的 ML 推理管道。
在创建机器学习推理管道时,您可以在索引任何文档之前,在测试选项卡下验证推理输出的预期结构。 提供一个示例文档,单击模拟,并在结果中查找 ml.inference
对象。
要确保在摄取文档时运行 ML 推理管道,您必须确保您正在摄取的文档具有一个名为 _run_ml_inference
的字段,该字段设置为 true
,并且您必须将管道设置为 {{index_name}}
。 对于连接器和爬网程序索引,如果您已为管道名称 {{index_name}}
适当地配置了设置,这将自动发生。 要管理这些设置
- 转到搜索 > 内容 > 索引 > <您的索引> > 管道。
- 单击
{{index_name}}
管道的Ingest Pipelines卡中的设置链接。 - 确保选择了ML inference pipelines。 如果没有,请选择它并保存更改。
- 有关已创建的各种管道的信息,请参阅概述。
- 了解ELSER,Elastic 用于稀疏向量语义搜索的专有检索模型。
- NER HuggingFace 模型
- 文本分类 HuggingFace 模型
- 文本嵌入 HuggingFace 模型