搜索中的摄取管道

edit

搜索中的摄取管道

edit

您可以通过Elasticsearch API或Kibana UI管理摄取管道。

搜索下的内容 UI 提供了一组用于创建和管理针对搜索用例(非时间序列数据)优化的索引的工具。 您还可以在此 UI 中管理您的摄取管道。

在内容界面中查找管道

edit

要使用这些UI工具处理摄取管道,您将在您的搜索优化Elasticsearch索引中使用管道选项卡。

要在 Kibana UI 中找到此选项卡:

  1. 转到 搜索 > 内容 > Elasticsearch 索引
  2. 选择您要处理的索引。例如,search-my-index
  3. 在索引的概览页面,打开 管道 标签。
  4. 从这里,您可以按照说明创建自定义管道,并设置 ML 推理管道。

在此截图中,选项卡被高亮显示:

ingest pipeline ent search ui

概述

edit

这些工具通过提供自定义和文档后处理的功能,可以特别有帮助。例如:

  • 提供从二进制数据类型中一致提取文本的功能
  • 确保一致的格式化
  • 提供一致的净化步骤(移除如电话号码或社会安全号码等个人身份信息)

从零开始设置和管理生产就绪的管道可能需要大量的工作。必须考虑诸如错误处理、条件执行、排序、版本控制和模块化等问题。

为此,当您为搜索用例创建索引时(包括Elastic 网络爬虫连接器和 API 索引),每个索引都已经设置了一个包含多个处理器的管道,用于优化您的内容以进行搜索。

这个管道被称为 ent-search-generic-ingestion。 虽然它是一个“托管”管道(意味着不应对其进行篡改),但您可以通过 Kibana UI 或 Elasticsearch API 查看其详细信息。 您还可以 在下面阅读更多关于其内容的信息

您可以控制是否运行其中一些处理器。 虽然默认情况下启用了所有功能,但它们可以选择退出。 对于Elastic 爬虫连接器,您可以按索引选择退出(或重新加入),并且您的选择会被保存。 对于 API 索引,您可以通过在文档中包含特定字段来选择退出(或重新加入)。 详情请见下文

在部署级别,您可以更改所有新索引的默认设置。 这不会影响现有索引。

每个索引还提供了轻松创建特定于索引的摄取管道的功能,并支持自定义处理。 如果您需要额外的灵活性,您可以通过访问您的管道设置并选择“复制并自定义”来创建自定义管道。 这将替换索引使用ent-search-generic-ingestion的方式,并生成3个新的管道:

  1. <索引名称>
  2. <索引名称>@custom
  3. <索引名称>@ml-inference

ent-search-generic-ingestion类似,这些中的第一个是“托管”的,但其他两个可以根据您的需求进行修改。 您可以使用平台工具(Kibana UI、Elasticsearch API)查看这些管道,并且还可以 在下面阅读更多关于它们的内容

管道设置

edit

除了管道本身,您还有一些配置选项,用于控制管道的各个功能。

  • 提取二进制内容 - 这控制是否应处理二进制文档并提取任何文本内容。
  • 减少空白 - 这控制是否应删除连续的、前导的和尾随的空白。 这可以帮助在某些搜索体验中显示更多内容。
  • 运行机器学习推理 - 仅在特定索引管道中可用。 这控制是否运行可选的 @ml-inference 管道。 默认启用。

对于Elastic网络爬虫和连接器,您可以按索引选择加入或退出。 这些设置存储在Elasticsearch的.elastic-connectors索引中,位于与特定索引对应的文档中。 这些设置可以直接在那里更改,或者通过Kibana UI在搜索 > 内容 > 索引 > <您的索引> > 管道 > 设置中进行更改。

您也可以更改部署范围内的默认设置。 这些设置存储在.elastic-connectors的Elasticsearch映射中的_meta部分。 这些设置可以直接在那里更改,或者通过Kibana UI在搜索 > 内容 > 设置选项卡中更改。 更改部署范围内的默认设置不会影响任何现有索引,但只会影响任何新创建的索引的默认设置。 这些默认设置仍然可以通过索引特定的设置进行覆盖。

使用 API

edit

这些设置不会为“使用 API”的索引持久化。 相反,更改这些设置将实时更改显示的示例 cURL 请求。 请注意,cURL 请求中的示例文档包含三个下划线前缀的字段:

{
  ...
  "_extract_binary_content": true,
  "_reduce_whitespace": true,
  "_run_ml_inference": true
}

省略这些特殊字段中的任何一个,就相当于将其指定为值 false

您还必须在索引请求中指定管道。 这在示例cURL请求中也显示了。

如果未指定管道,下划线前缀的字段实际上会被索引,并且不会影响任何处理行为。

详情

edit

ent-search-generic-ingestion 参考

edit

您可以通过Elasticsearch Ingest Pipelines API或Kibana的Stack Management > Ingest Pipelines界面访问此管道。

此管道是一个“托管”管道。 这意味着它不打算被编辑。 手动编辑/更新此管道可能会导致意外行为,或在将来升级时遇到困难。 如果您想进行自定义,我们建议您利用特定索引的管道(见下文),特别是 @custom 管道

处理器
edit
  1. attachment - 这使用Attachment处理器将存储在文档_attachment字段中的任何二进制数据转换为纯文本和元数据的嵌套对象。
  2. set_body - 这使用Set处理器将从前一步骤中提取的任何纯文本复制并持久化到文档的body字段中。
  3. remove_replacement_chars - 这使用Gsub处理器从body字段中删除类似“�”的字符。
  4. remove_extra_whitespace - 这使用Gsub处理器将body字段中的连续空白字符替换为单个空格。虽然对于每个用例来说并不完美(见下文如何禁用),但这可以确保搜索体验显示更多内容和突出显示,并为您的搜索结果减少空白空间。
  5. trim - 这使用Trim处理器从body字段中删除任何剩余的前导或尾随空白。
  6. remove_meta_fields - 管道的最后一步使用Remove处理器删除可能在管道其他地方使用的特殊字段,无论是作为临时存储还是作为控制流参数。
控制流参数
edit

The ent-search-generic-ingestion 管道并不总是运行所有处理器。 它利用了摄取管道的功能,根据每个文档的内容有条件地运行处理器

  • _extract_binary_content - 如果此字段存在并且在源文档上具有true值,管道将尝试运行attachmentset_bodyremove_replacement_chars处理器。 请注意,文档还需要一个填充了base64编码二进制数据的_attachment字段,以便attachment处理器产生任何输出。 如果源文档上缺少_extract_binary_content字段或其值为false,这些处理器将被跳过。
  • _reduce_whitespace - 如果此字段存在并且在源文档上具有true值,管道将尝试运行remove_extra_whitespacetrim处理器。 这些处理器仅适用于body字段。 如果源文档上缺少_reduce_whitespace字段或其值为false,这些处理器将被跳过。

爬虫、原生连接器和连接器客户端将根据索引的管道选项卡中的设置自动添加这些控制流参数。 要控制任何新索引在创建时的设置,请参阅部署范围的内容设置。 请参阅管道设置

特定索引的摄取管道

edit

在您的索引的 Kibana UI 中,通过点击 Pipelines 选项卡,然后选择 Settings > Copy and customize,您可以快速生成 3 个特定于您的索引的管道。 这 3 个管道替换了索引的 ent-search-generic-ingestion。 此操作不会丢失任何内容,因为 管道在功能上是 ent-search-generic-ingestion 管道的超集。

“复制并自定义”按钮在所有 Elastic 订阅级别中均不可用。 请参阅 Elastic 订阅页面以获取 Elastic Cloud自托管部署。

参考
edit

这个管道看起来和行为非常类似于ent-search-generic-ingestion 管道,但带有两个额外的处理器

您不应重命名此管道。

此管道是一个“托管”管道。 这意味着它不打算被编辑。 手动编辑/更新此管道可能会导致意外行为,或在将来升级时遇到困难。 如果您想进行自定义,我们建议您利用 @custom 管道

处理器
edit

除了从ent-search-generic-ingestion 管道继承的处理器外,特定索引管道还定义了:

  • index_ml_inference_pipeline - 这使用了Pipeline处理器来运行@ml-inference管道。 仅当源文档包含值为true_run_ml_inference字段时,才会运行此处理器。
  • index_custom_pipeline - 这使用了Pipeline处理器来运行@custom管道。
控制流参数
edit

ent-search-generic-ingestion管道类似,管道并不总是运行所有处理器。 除了_extract_binary_content_reduce_whitespace控制流参数外,管道还支持:

  • _run_ml_inference - 如果此字段存在于源文档中并且值为true,管道将尝试运行index_ml_inference_pipeline处理器。 如果源文档中缺少_run_ml_inference字段或其值为false,则此处理器将被跳过。

爬虫、原生连接器和连接器客户端将根据索引的管道选项卡中的设置自动添加这些控制流参数。 要控制任何新索引在创建时的设置,请参阅部署范围内的内容设置。 参见管道设置

@ml-inference 参考
edit

此管道最初是空的(没有处理器),但可以通过 Kibana UI 添加,无论是通过索引的 Pipelines 选项卡,还是从 Stack Management > Ingest Pipelines 页面。 与 ent-search-generic-ingestion 管道和 管道不同,此管道不是“受管理的”。

可以在 内容 UI 中向索引添加一个或多个 ML 推理管道。 此管道将作为为该索引配置的所有 ML 推理管道的容器。 添加到索引中的每个 ML 推理管道都在 @ml-inference 中使用 pipeline 处理器进行引用。

你不应该重命名这个管道。

管理使用这些模型的机器学习模型和机器学习推理管道需要 monitor_ml Elasticsearch 集群权限。

@custom 引用
edit

这个管道一开始是空的(没有处理器),但可以通过Kibana UI添加,无论是通过索引的Pipelines选项卡,还是从Stack Management > Ingest Pipelines页面。与ent-search-generic-ingestion管道和管道不同,这个管道不是“受管理的”。

鼓励您对这条流水线进行添加和编辑,前提是它的名称保持不变。 这提供了一个方便的钩子,用于为您的数据添加自定义处理和转换。 请务必阅读ingest pipelines的文档,以了解有哪些选项可用。

您不应重命名此管道。

升级说明

edit
展开以查看升级说明
  • app_search_crawler - 自8.3以来,App Search网络爬虫已利用此管道来支持其二进制内容提取。 您可以在App Search指南中阅读有关此管道及其用法的更多信息。 从8.3升级到8.5+时,请务必注意对app_search_crawler管道所做的任何更改。 这些更改应重新应用于每个索引的@custom管道,以确保一致的数据处理体验。 在8.5+中,除了App Search指南中提到的配置外,还需要启用索引设置以启用二进制内容
  • ent_search_crawler - 自8.4以来,Elastic网络爬虫已利用此管道来支持其二进制内容提取。 您可以在Elastic网络爬虫指南中阅读有关此管道及其用法的更多信息。 从8.4升级到8.5+时,请务必注意对ent_search_crawler管道所做的任何更改。 这些更改应重新应用于每个索引的@custom管道,以确保一致的数据处理体验。 在8.5+中,除了Elastic网络爬虫指南中提到的配置外,还需要启用索引设置以启用二进制内容
  • ent-search-generic-ingestion - 自8.5以来,原生连接器、连接器客户端和新(>8.4)Elastic网络爬虫索引都将默认使用此管道。 您可以在上方阅读有关此管道的更多信息。 由于此管道是“托管的”,因此不应将app_search_crawler和/或ent_search_crawler所做的任何修改应用于ent-search-generic-ingestion。 相反,如果需要此类自定义,您应使用特定于索引的摄取管道,将所有修改放在@custom管道中。

推理处理

edit

当您通过内容界面创建索引时,还会创建一组默认的摄取管道,包括一个机器学习推理管道。 机器学习推理管道使用推理处理器来分析字段并使用输出丰富文档。 推理处理器使用经过机器学习训练的模型,因此您需要使用内置模型或在您的集群中部署训练好的模型来使用此功能。

本指南重点介绍ML推理管道、其用途以及如何管理它。

此功能在所有 Elastic 订阅级别中均不可用。 请参阅 Elastic 订阅页面以获取 Elastic Cloud自托管 部署。

自然语言处理用例

edit

自然语言处理 (NLP) 使开发者能够创建超越词汇搜索标准的丰富搜索体验。 通过使用NLP模型来改善搜索体验的一些示例:

ELSER 文本扩展

edit

使用 Elastic 的 ELSER 机器学习模型,您可以轻松地为查询引入文本扩展。 这是通过使用 ELSER 在摄取文档时提供语义增强,并结合 Elastic 搜索应用程序模板 的强大功能,在查询时提供自动文本扩展来实现的。

命名实体识别 (NER)

edit

最常用于从文本中检测实体,如人物、地点和组织信息,NER 可以用于从文本中提取关键信息,并根据该信息对结果进行分组。 一家体育新闻媒体网站可以使用 NER 自动提取文章中的职业运动员姓名、体育场馆和运动队,并链接到赛季统计数据或赛程。

文本分类

edit

文本分类通常用于情感分析,并且可以用于类似的任务,例如在公共论坛中标记包含仇恨言论的内容,或对支持工单进行分类和标记,以便它们能够自动到达正确的升级级别。

文本嵌入

edit

使用文本嵌入模型分析文本字段将生成文本的密集向量表示。 这个数值数组编码了文本的语义含义。 使用相同的模型处理用户的搜索查询将生成一个向量,然后可以使用该向量进行搜索,根据向量相似性(语义相似性)对结果进行排序,而不是传统的单词或文本相似性。

一个常见的用例是用户搜索常见问题解答,或支持代理搜索知识库,其中语义上相似的内容可能在措辞上几乎没有相似之处。

内容界面中的NLP

edit
机器学习推理管道的概述
edit

下图展示了文档在摄取过程中是如何被处理的。

ML inference pipeline diagram
  • 文档由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字段来搜索高于或低于某个阈值的文档。

查找、部署和管理训练模型

edit

此功能旨在使您更容易使用经过训练的机器学习模型。 首先,您需要确定哪个模型最适合您的数据。 请确保使用兼容的第三方NLP模型。 由于这些模型是公开可用的,因此在部署它们之前无法进行微调。

训练好的模型必须在当前的Kibana Space中可用并运行才能使用。默认情况下,模型应在启用了分析 > 机器学习功能的Kibana Space中可用。要管理您的训练模型,请使用Kibana UI并导航到堆栈管理 → 机器学习 → 训练模型。可以在空间列中控制空间。要停止或启动模型,请转到Kibana的分析菜单中的机器学习选项卡,然后点击模型管理部分中的训练模型

管理 ML 模型和使用这些模型的 ML 推理管道需要 monitor_ml Elasticsearch 集群权限

向您的机器学习推理管道添加推理处理器
edit

要创建特定索引的机器学习推理管道,请在 Kibana UI 中转到 搜索 → 内容 → 索引 → <您的索引> → 管道

如果你只看到 ent-search-generic-ingestion 管道,你需要点击 复制并自定义 来创建索引特定的管道。 这将创建 {index_name}@ml-inference 管道。

一旦您的索引特定的机器学习推理管道准备就绪,您可以添加使用您训练好的机器学习模型的推理处理器。 要向机器学习推理管道添加推理处理器,请点击添加推理管道按钮在机器学习推理管道卡片中。

Add Inference Pipeline

在这里,您将能够:

  1. 为您的管道选择一个名称。

    • 此名称在整个部署中需要是唯一的。 如果您希望此管道特定于索引,我们建议在管道名称中包含您的索引名称。
    • 如果您未设置管道名称,则在选择训练模型时将提供一个默认的唯一名称。
  2. 选择您要使用的ML训练模型。

    • 在您可以选择模型之前,必须先部署该模型。 要开始部署模型,请点击部署按钮。
  3. 选择一个或多个源字段作为推理处理器的输入。

    • 如果没有可用的源字段,您的索引将需要一个字段映射
  4. (可选)为目标字段选择一个名称。 这是推理模型的输出将存储的位置。仅当您选择了一个源字段时,才能更改默认名称。
  5. 通过点击添加按钮,将源-目标字段映射添加到配置中。
  6. 对您要添加的每个字段映射重复步骤3-5。
  7. (可选)使用示例文档测试管道。
  8. (可选)在使用创建管道按钮创建之前,查看管道定义。
管理和删除您的ML推理管道中的推理处理器
edit

添加到您的索引特定机器学习推理管道中的推理处理器是普通的 Elasticsearch 管道。 一旦创建,每个处理器都会有选项来 在堆栈管理中查看删除管道。 从 内容 UI 中删除推理处理器会删除该管道,并从您的索引特定机器学习推理管道中移除其引用。

这些管道也可以在 Kibana 中通过 堆栈管理 → 摄取管道 查看、编辑和删除,就像所有其他 Elasticsearch 摄取管道一样。 您也可以使用 摄取管道 API。 如果您在 Kibana 的 内容 UI 之外删除了这些管道中的任何一个,请确保编辑引用它们的 ML 推理管道。

测试您的机器学习推理管道

edit

测试标签下创建机器学习推理管道时,您可以在索引任何文档之前验证推理输出的预期结构。 提供一个示例文档,点击模拟,并在结果中查找ml.inference对象。

为了确保在摄取文档时运行ML推理管道,您必须确保正在摄取的文档具有一个名为_run_ml_inference的字段,并且该字段设置为true,同时您必须将管道设置为{index_name}。 对于连接器和爬虫索引,如果您已为管道名称{index_name}适当地配置了设置,这将自动发生。 要管理这些设置:

  1. 转到 搜索 > 内容 > 索引 > <你的索引> > 管道
  2. {index_name} 管道的 摄取管道 卡片中点击 设置 链接。
  3. 确保已选择 ML 推理管道。 如果未选择,请选择它并保存更改。

了解更多

edit

教程:自然语言处理 (NLP)

edit

本指南专注于一个具体的任务:将经过训练的机器学习模型加载到Elasticsearch中,并设置为丰富您的文档。

Elasticsearch 支持许多不同的方式来使用机器学习模型。 在本指南中,我们将使用一个训练好的模型来在摄取时丰富文档,使用在 Kibana 的 内容 UI 中配置的摄取管道。

在本指南中,我们将通过以下步骤完成上述内容:

  • 设置云部署: 我们将使用 Elastic Cloud 来托管我们的部署,因为它可以轻松扩展机器学习节点。
  • 使用 Eland 加载模型: 我们将使用 Eland Elasticsearch 客户端将我们选择的模型导入 Elasticsearch。 一旦我们验证了模型已加载,我们就能够在摄取管道中使用它。
  • 设置机器学习推理管道: 我们将创建一个具有预定义映射的 Elasticsearch 索引,并添加一个推理管道。
  • 展示丰富的结果: 我们将向索引中摄取一些数据,并观察管道如何丰富我们的文档。

按照说明加载一个文本分类模型,并将其设置为丰富一些照片评论数据。 一旦你对涉及的步骤感到满意,请将本指南作为使用其他机器学习训练模型的蓝图。

目录

创建一个弹性云部署

edit

您的部署将需要一个机器学习实例来上传和部署训练好的模型。

如果你的团队已经有一个Elastic Cloud部署,请确保它至少有一个机器学习实例。 如果没有,请编辑你的部署以增加容量。 在本教程中,我们需要至少2GB的RAM在一个单一的机器学习实例上。

如果您的团队没有 Elastic Cloud 部署,请先注册一个 免费 Elastic Cloud 试用版。 创建帐户后,您将拥有一个有效的订阅,并会提示您创建您的第一个部署。

按照步骤来创建一个新的部署。 在创建部署之前,请确保在高级设置下为机器学习实例添加容量。 为了简化扩展,请开启自动扩展此部署功能。 如果您使用自动扩展,您应该增加机器学习实例的最小RAM。 在本教程中,我们需要至少2GB的RAM。 更多详情,请参阅Elastic Cloud文档中的创建部署

使用机器学习丰富文档在企业搜索8.5.0中引入,因此请确保使用8.5.0或更高版本

克隆 Eland

edit

Elastic 的 Eland 工具使得通过 Docker 上传训练好的模型到您的部署变得简单。

Eland 是一个专门用于探索和操作数据的 Elasticsearch 客户端,我们可以使用它将训练好的模型上传到 Elasticsearch 中。

要使用 Docker 克隆并构建 Eland,请运行以下命令:

git clone git@github.com:elastic/eland.git
cd eland
docker build -t elastic/eland .

部署训练好的模型

edit

现在你已经有了一个部署和一个上传模型的方法,你需要选择一个适合你数据的训练模型。 Hugging Face 有一个大型公开可用的训练模型库。 你选择的模型将取决于你的数据以及你希望如何使用它。

在本指南中,我们假设我们有一个照片评论的数据集。 为了在我们的平台上营造一个积极的氛围,我们希望每张照片的前几条评论都是积极的评论。 对于这个任务,distilbert-base-uncased-finetuned-sst-2-english 模型是一个很好的选择。

要将此模型上传到您的部署,您需要一些数据:

  • 部署的URL。 您可以通过部署管理屏幕上Elasticsearch旁边的复制端点链接获取此URL。 它看起来像https://ml-test.es.us-west1.gcp.cloud.es.io:443。 确保如果端口不存在,请附加端口,因为Eland要求URL具有方案、主机和端口。 443是HTTPS的默认端口。
  • 部署的用户名和密码。 这是在部署创建时显示一次的。 它看起来像elasticxUjaFNTyycG34tQx5Iq9JIIA
  • 训练模型的ID。 这来自Hugging Face。 它看起来像distilbert-base-uncased-finetuned-sst-2-english
  • 训练模型的任务类型。 这是模型设计要完成的机器学习任务的类型。 它将是以下之一:fill_masknertext_classificationtext_embeddingzero_shot_classification。 在我们的用例中,我们将使用text_classification

我们现在可以通过向Eland提供这些选项,将我们选择的模型上传到Elasticsearch。

docker run -it --rm --network host \
    elastic/eland \
    eland_import_hub_model \
      --url https://ml-test.es.us-west1.gcp.cloud.es.io:443 \
      -u elastic -p <PASSWORD> \
      --hub-model-id distilbert-base-uncased-finetuned-sst-2-english \
      --task-type text_classification \
      --start

这个脚本大约需要运行2-3分钟。 一旦您的模型成功部署到您的Elastic部署中,请导航到Kibana的训练模型页面以验证其是否准备就绪。 您可以在机器学习 > 分析菜单下找到此页面,然后选择训练模型 > 模型管理。 如果您在列表中没有看到您的模型,您可能需要点击同步您的作业和训练模型。 您的模型现在已准备好使用。

创建索引并定义机器学习推理管道

edit

我们现在准备使用 Kibana 的 内容 UI 来使用推理数据丰富我们的文档。 在将照片评论导入 Elasticsearch 之前,我们将首先创建一个 ML 推理管道。 该管道将使用推理数据丰富传入的照片评论,指示评论是否为正面。

假设我们的照片评论在上传为文档到Elasticsearch时看起来像这样:

{
  "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
  "body": "your dog is so cute!",
  ...
}

我们希望将我们的文档通过一个推理处理器,该处理器使用我们上传的训练模型来确定评论是否为正面。为此,我们首先需要设置一个Elasticsearch索引。

  • 从Kibana主页开始,点击搜索卡片。
  • 点击按钮以创建一个Elasticsearch索引
  • 选择使用API并为您的索引命名。 它将自动以search-为前缀。 在本演示中,我们将索引命名为search-photo-comments
  • 点击创建索引后,您将被重定向到新索引的概览页面。

要配置ML推理管道,我们需要索引具有现有字段映射,以便我们可以选择要分析的字段。 这可以通过Kibana开发工具中的索引映射API或通过cURL命令简单完成:

PUT search-photo-comments/_mapping
{
  "properties": {
    "photo_id": { "type": "keyword" },
    "body": { "type": "text" }
  }
}

现在是时候创建一个推理管道了。

  1. 从“搜索”中您的search-photo-comments索引的概览页面,点击管道标签。 默认情况下,Elasticsearch不会创建任何索引特定的摄取管道。
  2. 因为我们想要自定义这些管道,我们需要复制并自定义 ent-search-generic-ingestion 摄取管道。 在ent-search-generic-ingestion 摄取管道的设置上方找到此选项。 这将创建两个新的索引特定摄取管道。

接下来,我们将添加一个推理管道。

  1. 找到机器学习推理管道部分,然后选择添加推理管道
  2. 为您的推理管道命名,选择我们上传的训练模型,并选择要分析的body字段。
  3. 可选地,选择一个字段名称来存储输出。 我们将其称为positivity_result

您还可以通过模拟器运行示例文档,并在创建之前查看管道。

索引文档

edit

此时,所有内容都已准备好,可以在索引时丰富文档。

从Kibana开发控制台,或简单地使用cURL命令,我们可以索引一个文档。 我们将使用_run_ml_inference标志来告诉search-photo-comments管道运行我们创建的特定于索引的ML推理管道。 此字段将不会在文档中被索引。

POST search-photo-comments/_doc/my-new-doc?pipeline=search-photo-comments
{
  "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
  "body": "your dog is so cute!",
  "_run_ml_inference": true
}

一旦文档被索引,使用API来检索它并查看增强的数据。

GET search-photo-comments/_doc/my-new-doc
{
  "_index": "search-photo-comments",
  "_id": "_MQggoQBKYghsSwHbDvG",
  ...
  "_source": {
    ...
    "photo_id": "78sdv71-8vdkjaj-knew629-vc8459p",
    "body": "your dog is so cute!",
    "ml": {
      "inference": {
        "positivity_result": {
          "predicted_value": "POSITIVE",
          "prediction_probability": 0.9998022925461774,
          "model_id": "distilbert-base-uncased-finetuned-sst-2-english"
        }
      }
    }
  }
}

文档中新增了包含丰富数据的字段。 ml.inference.positivity_result 字段是一个包含机器学习模型分析结果的对象。 我们使用的模型以 99.98% 的置信度预测所分析的文本是正面的。

从这里,我们可以编写搜索查询来提升ml.inference.positivity_result.predicted_value。 如果模型足够自信,此字段也将存储在顶级的positivity_result字段中。

总结

edit

在本指南中,我们介绍了如何:

  • 在Elastic Cloud上设置一个带有机器学习实例的部署。
  • 使用Eland Elasticsearch客户端部署一个机器学习训练模型。
  • 配置一个推理管道,以在Elasticsearch中使用训练好的模型。
  • 在摄取时使用训练好的模型的推理结果来丰富文档。
  • 查询您的搜索引擎并按positivity_result排序。

了解更多

edit