推理处理
当您通过 Content(内容)UI 创建索引时,还会创建一组默认的接收管道,其中包括机器学习推理管道。ML 推理管道使用推理处理器来分析字段并用输出丰富文档。推理处理器使用 ML 训练模型,因此您需要使用内置模型或在集群中部署训练模型才能使用此功能。
本指南重点介绍 ML 推理管道、其用途以及如何对其进行管理。
并非所有 Elastic 订阅级别都提供此功能。请参阅 Elastic Cloud 和自管部署的 Elastic 订阅页面。
自然语言处理 (NLP) 使开发人员能够创建超越词汇搜索标准的丰富搜索体验。以下是通过使用 NLP 模型改善搜索体验的几个示例:
使用 Elastic 的 ELSER 机器学习模型,您可以为查询合并文本扩展。其工作原理是:在摄取文档时使用 ELSER 为文档提供语义丰富,并结合 Elastic Search Application 模板的功能在查询时提供自动文本扩展。
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。
管理 ML 模型以及使用这些模型的 ML 推理管道需要 monitor_ml Elasticsearch 集群权限。
要创建特定于索引的 ML 推理管道,请在 Kibana UI 中转到 Search → Content → Indices → <your index> → Pipelines。
如果您只看到 search-default-ingestion 管道,则需要单击 Copy and customize 来创建特定于索引的管道。这将创建 {{index_name}}@ml-inference 管道。
特定于索引的 ML 推理管道准备就绪后,您可以添加使用 ML 训练模型的推理处理器。要将推理处理器添加到 ML 推理管道,请单击 Machine Learning Inference Pipelines 卡片中的 Add Inference Pipeline 按钮。
在这里,您将能够:
为您的管道选择一个名称。
- 此名称在整个部署中必须是唯一的。如果您希望此管道是特定于索引的,建议在管道名称中包含您的索引名称。
- 如果您未设置管道名称,则在选择训练模型后将提供默认的唯一名称。
选择要使用的 ML 训练模型。
- 必须先部署模型,然后才能选择它。要开始部署模型,请单击 Deploy 按钮。
选择一个或多个源字段作为推理处理器的输入。
- 如果没有可用的源字段,您的索引将需要进行字段映射。
(可选)为您的目标字段选择一个名称。推理模型的输出将存储在此处。只有在选择单个源字段时,才能更改默认名称。
单击 Add 按钮将源-目标字段映射添加到配置中。
对要添加的每个字段映射重复步骤 3-5。
(可选)使用示例文档测试管道。
(可选)在通过 Create pipeline 按钮创建管道之前,检查管道定义。
添加到特定于索引的 ML 推理管道中的推理处理器是常规的 Elasticsearch 管道。创建后,每个处理器都将具有 View in Stack Management 和 Delete Pipeline 选项。从 Content UI 中删除推理处理器会删除该管道,同时也会从特定于索引的 ML 推理管道中移除对其的引用。
就像所有其他 Elasticsearch 接收管道一样,这些管道也可以在 Kibana 的 Ingest Pipelines 管理页面中进行查看、编辑和删除。您也可以使用 Ingest pipeline API。如果您在 Kibana 的 Content UI 之外删除了其中任何管道,请确保编辑引用它们的 ML 推理管道。
在 Test 选项卡下创建机器学习推理管道时,您可以在对任何文档进行索引之前验证推理输出的预期结构。提供一个示例文档,单击 Simulate,并在结果中查找 ml.inference 对象。
为确保在摄取文档时运行 ML 推理管道,您必须确保要摄取的文档具有名为 _run_ml_inference 且设置为 true 的字段,并且您必须将管道设置为 {{index_name}}。对于连接器和爬虫索引,如果您已针对管道名称 {{index_name}} 正确配置了设置,则此操作将自动发生。要管理这些设置:
- 转到 Search > Content > Indices > <your index> > Pipelines。
- 单击
{{index_name}}管道的 Ingest Pipelines 卡片中的 Settings 链接。 - 确保选中了 ML inference pipelines。如果未选中,请将其选中并保存更改。
- 请参阅概述了解有关所创建的各种管道的信息。
- 了解有关 ELSER 的信息,这是 Elastic 专有的检索模型,用于通过稀疏向量进行语义搜索。
- NER HuggingFace 模型
- 文本分类 HuggingFace 模型
- 文本嵌入 HuggingFace 模型