Elatstic search 8.0 在nlp任务中的实践

文章目录

Elastic search 8.0 在今年2月份更新,涉及两个大的功能点,分别为:

  • 向量检索提高搜索相关性
  • NLP组件支持NLP任务

向量检索已在博客Elatstic search 8.0 在knn检索中的实践中介绍
这里讨论NLP相关任务模块。

NLP模块介绍

elastic search8.0在NLP任务上的基本框架有了如下变化:

Elatstic search 8.0 在nlp任务中的实践
Elatstic search 8.0 在nlp任务中的实践
  • es内置工具eland 在8.0之前支持数据统计和数据挖掘功能,在8.0中添加了基于pytorch框架的transformer模块,使得elastic search 在NLP任务上更加简便快捷,这些transformer模块均可以在hugging face中找到。
    eland使用方法见github:https://github.com/elastic/eland#nlp-with-pytorch.

; 支持的任务

目前支持:fill_mask, ner, text_classification, text_embedding和 zero_shot_classification这几类任务,因此transformer模型需要基于以上任务进行预训练或者微调。

实践

  • ea和eland的版本要一一对应,这里均使用8.0.0版本
  • 流程如下:1.模型加载;2.模型部署;3.nlp任务。

模型加载

从github 直接下载eland源码,进入bin文件夹,输入如下命令:

eland_import_hub_model --url <clusterUrl> \
--hub-model-id <id-name> \
--task-type ner

windows当中以上命令行报错,把eland_import_hub_model 添加.py后缀改成一个python脚本然后运行python脚本即可。
这里

出现模型加载界面即为成功

模型部署

加载完成以后可以在kibana上看自己的模型名称,在 Analytics-Machine Learning-Model Management中可以看到:

Elatstic search 8.0 在nlp任务中的实践

然后输入如下api命令行:

POST _ml/trained_models/<model_id>/deployment/_start

model_id为模型名称,完成部署,在kibana模型下拉菜单可以看到模型支持的状态、任务和相关参数:

Elatstic search 8.0 在nlp任务中的实践

NLP任务

以上过程完成以后可以做一些NLP任务,我加载了两个模型,分别用来作中文的fill-mask英文的情感分类,这一块我直接在kibana中完成,用postman也是可以的。

Elatstic search 8.0 在nlp任务中的实践
Elatstic search 8.0 在nlp任务中的实践

Elatstic search 8.0 在nlp任务中的实践
Elatstic search 8.0 在nlp任务中的实践
label 0对应sadness标签。

; 创建pipline

在Stack Management > Ingest Pipelines中创建和编辑pipline
具体步骤参见:Add NLP inference to ingest pipelines

Elatstic search 8.0 在nlp任务中的实践
然后就可以实现对检索结果的NLP任务。

; 总结

  • 目前仅支持几类NLP任务,在文本生成这一部分还不支持;
  • 仅支持pytorch ,其他框架不支持。
  • elastic_search-py中支持7.14版本,不支持8以上版本。

Original: https://blog.csdn.net/loveitlovelife/article/details/124214022
Author: loveitlovelife
Title: Elatstic search 8.0 在nlp任务中的实践

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528279/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球