Elasticsearch:部署 ELSER - Elastic Learned Sparse EncoderR

警告:此功能处于技术预览阶段,可能会在未来的版本中更改或删除。 Elastic 将尽最大努力修复任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 约束。

Elastic Learned Sparse EncodeR - 或 ELSER - 是由 Elastic 训练的检索模型,使你能够执行语义搜索以检索更相关的搜索结果。 此搜索类型为您提供基于上下文含义和用户意图的搜索结果,而不是精确的关键字匹配。

ELSER 是一种域外(out-of-domain)模型,这意味着它不需要对你自己的数据进行微调,因此可以开箱即用地适应各种用例。

ELSER 将索引和搜索的段落扩展为术语集合,这些术语被学习为在不同的训练数据集中经常共同出现。 模型将文本扩展成的术语不是搜索术语的同义词; 他们是博学的协会。 这些扩展的术语被加权,因为其中一些比其他的更重要。 然后 Elasticsearch rank-feature 字段类型用于在索引时存储术语和权重,并在以后进行搜索。

以下安装是在 Elastic Stack 8.8 下完成的。

要求

要使用 ELSER,你必须具有相应的语义搜索(semantic search)订阅级别或激活试用期。

安装

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参阅如下的链接来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

在安装的时候,请注意选择 Elastic Stack 8.x 的指南来进行安装。我们需要安装 Elastic Stack 8.8 及以上版本。

启动白金试用

由于语义搜索是一个机器学习的范畴,是一个收费的功能。如果我们不启动试用版本,那么在下载的时候,会出现如下的错误信息:

我们按照如下的方式来启动白金试用:

 

 

 

 

这样,我们试用授权已经启动了。

下载并部署 ELSER 

我们有如下的三种方法来下载并部署 ELSER:

  • Machine Learning => Trained Models
  • Enterprise Search => Indices
  • 通过 Dev Console

下面,我们来详细介绍它的步骤。

通过机器学的 Trained Model 页面

 

 

 

上面显示:

 

我们可以看到它正在下载当中。我们需要等待一点时间。

 

 

我们点击 Play 按钮来进行部署。

 

至此,我们已经成功地部署了 ELSER。

通过 Enterprise Search 中的 Indices 页面

针对 Enterprise search 的安装,请参考文章 “Enterprise:使用 Elastic Stack 8.2 中的 Elasticsearch API 来定位 App Search 中的文档”。

你还可以直接从 Enterprise Search 应用下载 ELSER 并将其部署到推理管道。如果你的 Elasticsearch 还没有任何的索引的话,你可以使用类似如下的命令来创建一个索引:

PUT twitter/_doc/1
{
  "name": "Xiaoguo Liu from Elastic"
}

上述命令将生成一个叫做 twitter 的索引。

 

 

 

 

 

 

 

 

 

 

从上面我们可以看出来模型已经被成功地部署。我们可以在这个页面进行配置它的部署。

使用 Dev Console 来进行部署

我们在 Dev Tools 中,通过运行以下 API 调用创建 ELSER 模型配置:

PUT _ml/trained_models/.elser_model_1
{
  "input": {
	"field_names": ["text_field"]
  }
}

如果尚未下载模型,API 调用会自动启动模型下载。

等过一会儿,我们可以看到如下的页面:

 

我们可以在机器学习的 Trained Models 里进行查看。 

我们可以使用带有 delpoyment ID 的开始训练模型部署 API 来部署模型:

POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=for_search

 

我们可以在机器学习的页面查看它的状态。上面显示已经是 started 状态。你可以使用不同的部署 ID 多次部署模型。 

以下示例为 ID 为 my_model_for_ingest 的 .elser_model_1 训练模型启动新部署。 部署 ID 可用于推理 API 调用或推理处理器。

POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=my_model_for_ingest

可以使用不同的 ID 再次部署经过 my_model 训练的模型:

POST _ml/trained_models/.elser_model_1/deployment/_start?deployment_id=my_model_for_search

部署完成后,ELSER 就可以在摄取管道或 text_expansion 查询中使用以执行语义搜索。

如何使用 ELSER 模型

我们可以使用如下的命令来进行测试:

POST /_ml/trained_models/.elser_model_1/_infer
{
  "docs": {
    "text_field": "how is the weather in jamaica"
  }
}

从上面我们可以看出来它是一个 text_expansion 类型的模型:

 

在气隙环境中部署 ELSER

如果你想在受限或封闭的网络中部署 ELSER,你有两种选择:

  • 创建你自己的带有模型工件的 HTTP/HTTPS 端点,
  • 将模型工件放入所有符合主节点条件的配置目录内的目录中。

你的系统中需要以下文件:

https://ml-models.elastic.co/elser_model_1.metadata.json
https://ml-models.elastic.co/elser_model_1.pt
https://ml-models.elastic.co/elser_model_1.vocab.json

使用 HTTP 服务器

提示:如果你使用现有的 HTTP 服务器,请注意模型下载器仅支持无密码 HTTP 服务器。

你可以使用任何 HTTP 服务来部署 ELSER。 此示例使用官方 Nginx Docker 映像来设置新的 HTTP 下载服务。

1)从 https://ml-models.elastic.co/ 下载模型工件文件。

2)将文件放入你选择的子目录中。

3)运行以下命令:

export ELASTIC_ML_MODELS="/path/to/models"
docker run --rm -d -p 8080:80 --name ml-models -v ${ELASTIC_ML_MODELS}:/usr/share/nginx/html nginx

不要忘记将 /path/to/models 更改为模型工件文件所在的子目录的路径。

这些命令使用 Nginx 服务器启动本地 Docker 映像,其子目录包含模型文件。 由于需要下载和构建Docker镜像,第一次启动可能需要较长的时间。 随后的运行开始得更快。

4)通过在浏览器中访问以下 URL 来验证 Nginx 是否正常运行:

http://{IP_ADDRESS_OR_HOSTNAME}:8080/elser_model_1.metadata.json

如果 Nginx 正常运行,你会看到模型的元数据文件的内容。

5)通过将以下行添加到 config/elasticsearch.yml 文件,将你的 Elasticsearch 部署指向 HTTP 服务器上的模型工件:

xpack.ml.model_repository: http://{IP_ADDRESS_OR_HOSTNAME}:8080

如果你使用自己的 HTTP 或 HTTPS 服务器,请相应地更改地址。 指定协议很重要(“http://”或“https://”)。 确保所有符合主节点条件的节点都可以访问你指定的服务器。

6)在所有符合主节点资格的节点上重复步骤 5。

7)一个接一个地重启 master-eligible节点。

仅下载模型需要 HTTP 服务器。 下载完成后,你可以停止并删除该服务。 你可以通过运行以下命令停止此示例中使用的 Docker 镜像:

docker stop ml-models

使用基于文件的访问

对于基于文件的访问,请执行以下步骤:

1)从 https://ml-models.elastic.co/ 下载模型工件文件。
2)将文件放入 Elasticsearch 部署的配置目录内的模型子目录中。
3)通过将以下行添加到 config/elasticsearch.yml 文件,将你的 Elasticsearch 部署指向模型目录:

xpack.ml.model_repository: file://${path.home}/config/models/`

4)在所有符合主节点资格的节点上重复步骤 2 和步骤 3。
5)一个接一个地重启 master-eligible 节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈中移链中插件的功能及使用

中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。它允许使用插件来扩展其功能,以适应各种不同的使用场景。 什么是中移链插件呢?如果把中移链比作一个操作系统,那么插件就类比于操作系统上的…

工作流引擎Flowable

这里写目录标题 1.Flowable基础1.1 入门学习 2.流程图设计器2.1 FlowableUI2.1.1 绘制流程图 1.Flowable基础 官方手册 1.1 入门学习 一、依赖 <dependencies><dependency><groupId>org.flowable</groupId><artifactId>flowable-engine</…

Android系统安全 — 6.2 Ethernet安卓架构

1. Android Ethernet架构介绍 整个Ethernet系统架构如下图所示&#xff1a; 以太网服务&#xff08;EthernetService&#xff09;的启动与注册流程&#xff1b;应用层调用使能ethernet功能的方法流程来分析&#xff0c;从应用层如何将指令一步一步传到底层kernel&#xff1b;…

阿里巴巴开源的Spring Cloud Alibaba手册在GitHub上火了

“微服务架构经验你有吗&#xff1f;” 前段时间一个朋友去面试&#xff0c;阿里面试官一句话问倒了他。实际上&#xff0c;不在BAT这样的大厂工作&#xff0c;是很难接触到支撑千亿级流量微服务架构项目的。但也正是这种难得&#xff0c;让各个大厂都抢着要这样的人才&#x…

docker-harbor私有仓库

一、Harbor概述 1、Harbor的概念 • Harbor是VMware公司开源的企业级Docker Registry项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的Docker Registry服务 • Harbor以 Docker 公司开源的Registry 为基础&#xff0c;提供了图形管理UI、基于角色的访问控制(Role Base…

华为流程体系:IPD流程框架(限制版)

目录 前言 详细内容 专栏列表 CSDN学院课程地址 前言 今天主要来谈谈 IPD 体系的主体框架所涉及的一些相关内容。 其实关于 IPD 体系&#xff0c;我在之前的文章或课程中都有过不同程度的讲解。 但是&#xff0c;由于这个体系所涉及的面是非常广泛的。 这个时候就必须通…

sql总理论加实践

一、基础查询 DQL语法 SELECT 字段列表 1.设置别名 SELECT 字段1[别名],字段二[别名]......FROM 表名 WHERE 条件列表; 2.查询多个字段 SELECT 字段1,字段2,字段3......FROM 表名; SELECT * FROM 表名; 3.去除重复记录 DISTANT FROM 表明列表 WHERE 条件列表(条件…

利用etcd实现分布式锁

python etcd3模块的lock使用 观察lock的加解锁影响 在python中已经自带了分布式锁的实现方式&#xff0c;下面我们尝试一下加锁与解锁的流程 在运行该demo同时也对lock对应的key进行watch&#xff0c;观察其变化&#xff0c;注意python-etcd3在实现分布式锁的时候&#xff0…

【Python爬虫开发基础⑤】HTML概述与基本标签详解

专栏&#xff1a;python网络爬虫从基础到实战 欢迎订阅&#xff01;近期还会不断更新~ 往期推荐&#xff1a; 【Python爬虫开发基础①】Python基础&#xff08;变量及其命名规范&#xff09; 【Python爬虫开发基础②】Python基础&#xff08;正则表达式&#xff09; 【Python爬…

探秘华为交换机:端口类型全解析

在下列情况下&#xff0c;判断的一般方法是什么&#xff1f; 1.交换机某个端口下的用户丢包。 2.交换机下的所有用户都在丢失数据包。 3、用户反映网速缓慢 检查网络电缆&#xff0c;重做水晶头&#xff0c;检查用户的计算机网卡&#xff0c;并重新启动交换机。 这几种做法都能…

Flink 学习五 Flink 时间语义

Flink 学习五 Flink 时间语义 1.时间语义 在流式计算中.时间是一个影响计算结果非常重要的因素! (窗口函数,定时器等) Flink 可以根据不同的时间概念处理数据。 处理时间: process time System.currentTimeMillis()是指执行相应操作的机器系统时间&#xff08;也称为纪元时间…

Docker安全

一、Docker 容器与虚拟机的区别 1、隔离与共享 • 虚拟机通过添加 Hypervisor 层&#xff0c;虚拟出网卡、内存、CPU 等虚拟硬件&#xff0c;再在其上建立虚拟机&#xff0c;每个虚拟机都有自己的系统内核 • Docker容器则是通过隔离的方式&#xff0c;将文件系统、进程、设…

Redis入门 - Lua脚本

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis入门 - Lua脚本 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-scription.html Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。 …

Spark01-Spark快速上手、运行模式、运行框架、核心概念

1 概述 Spark和Hadoop Hadoop HDFS(GFS:TheGoogleFileSystem)MapReduce总结&#xff1a;性能横向扩展变得容易&#xff0c;横向拓展:增加更多的计算节点来扩展系统的处理能力Hbase&#xff1a;分布式数据库 Spark Spark CoreSpark SQLSQL 方言&#xff08;HQL)Spark Streamin…

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型

光伏电池局部遮阴下三种不同的工况对比MATLAB仿真模型及程序资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87910311 模型简介&#xff1a; 建议使用MATLAB21b及以上版本打开&#xff01; 光伏阵列表面被局部遮挡时会产生热斑效应。为了防止太阳电池因热…

【Matter】Matter学习笔记1

文章目录 前言Matter协议架构1.Matter Over IPV62.Matter协议架构3.Matter标准协议架构 Matter网络拓扑结构Mesh组网1.单一网络拓扑2.星形网络拓扑 设备数据模型&#xff08;Date Model&#xff09;1.设备和端点&#xff08;Node、Endpoint&#xff09;2.节点角色&#xff08;N…

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(二)

文章目录 机器人逆运动学※ 代数解、几何解&#xff0c;解析解&#xff08;封闭解&#xff09;、数值解的含义与联系○ 代数解求 θ 1 \theta_1 θ1​、 θ 2 \theta_2 θ2​、 θ 3 \theta_3 θ3​※参考资料 求解 θ 1 \theta_1 θ1​ 求解 θ 3 \theta_3 θ3​ 求解 θ 2 \t…

Unity核心7——2D动画

一、序列帧动画 &#xff08;一&#xff09;什么是序列帧动画 ​ 我们最常见的序列帧动画就是我们看的日本动画片&#xff0c;以固定时间间隔按序列切换图片&#xff0c;就是序列帧动画的本质 ​ 当固定时间间隔足够短时&#xff0c;我们肉眼就会认为图片是连续动态的&#…

【Java基础学习打卡11】Path环境变量的配置

目录 前言一、为什么配置环境变量二、如何配置环境变量三、JDK11的环境变量配置总结 前言 本文我们要知道为什么配置环境变量&#xff0c;自己思考不配置环境变量可以吗&#xff1f;JDK 11 如何配置环境变量。 一、为什么配置环境变量 原因很简单&#xff0c;就是方便命令的查…