【OpenSearch】机器学习(Machine Learning)神经搜索教程

早年就在Elasticsearch上看到过机器学习模块,局限于需要开通白金及以上订阅,没有尝试过该模块,OpenSearch在2.6还是哪个版本已经内置该插件。

文章参考:https://opensearch.org/docs/latest/search-plugins/neural-search-tutorial/#top

1. 查看插件列表

opensearch-ml就是机器学习插件。

GET /_cat/plugins

node-1 opensearch-alerting 2.17.1.0
node-1 opensearch-anomaly-detection 2.17.1.0
node-1 opensearch-asynchronous-search 2.17.1.0
node-1 opensearch-cross-cluster-replication 2.17.1.0
node-1 opensearch-custom-codecs 2.17.1.0
node-1 opensearch-flow-framework 2.17.1.0
node-1 opensearch-geospatial 2.17.1.0
node-1 opensearch-index-management 2.17.1.0
node-1 opensearch-job-scheduler 2.17.1.0
node-1 opensearch-knn 2.17.1.0
node-1 opensearch-ml 2.17.1.0
node-1 opensearch-neural-search 2.17.1.0
node-1 opensearch-notifications 2.17.1.0
node-1 opensearch-notifications-core 2.17.1.0
node-1 opensearch-observability 2.17.1.0
node-1 opensearch-performance-analyzer 2.17.1.0
node-1 opensearch-reports-scheduler 2.17.1.0
node-1 opensearch-security 2.17.1.0
node-1 opensearch-security-analytics 2.17.1.0
node-1 opensearch-skills 2.17.1.0
node-1 opensearch-sql 2.17.1.0
node-1 opensearch-system-templates 2.17.1.0
node-1 query-insights 2.17.1.0

步骤 1:建立 ML 语言模型

神经搜索需要语言模型来在摄取时和查询时从文本字段生成向量嵌入。

步骤 1(a):选择语言模型

在本教程中,您将使用Hugging Face 的DistilBERT模型。它是 OpenSearch 中可用的预训练句子转换器模型之一,在基准测试中显示出一些最佳结果(有关详细信息,请参阅此博客文章)。您需要模型的名称、版本和维度才能注册它。您可以通过选择与模型的 TorchScript 工件相对应的链接在预训练模型表中找到此信息config_url:

  • 模型名称为huggingface/sentence-transformers/msmarco-distilbert-base-tas-b。
  • 模型版本是1.0.1。
  • 该模型的维数为768。

记下模型的维数,因为在设置 k-NN 索引时需要它。

步骤 1(b):注册模型组

POST /_plugins/_ml/model_groups/_register
{"name": "NLP_model_group","description": "A model group for NLP models"
}
  • 此处模型组id返回为21en15IBr7hYQeyMk7-W
    您将使用此 ID 将所选模型注册到模型组。

步骤 1©: 将模型注册到模型组

POST /_plugins/_ml/models/_register
{"name": "huggingface/sentence-transformers/msmarco-distilbert-base-tas-b","version": "1.0.1","model_group_id": "21en15IBr7hYQeyMk7-W","model_format": "TORCH_SCRIPT"
}
  • 此处模型id返回为5Veo15IBr7hYQeyM5b_B

获取模型是否创建完成(任务状态将为COMPLETED)

GET /_plugins/_ml/tasks/5Veo15IBr7hYQeyM5b_B

这里需要注意,模型拉取可能会失败,所以我测试环境使用了离线注册

离线注册

1. 手动下载文件到一个文件服务器

搭建一个nginx,做文件服务器,把下载好的模型文件,放到路径下,通过http访问后,右键该文件,复制下载链接。

2.集群设置
  1. 配置集群可以设置离线注册
PUT _cluster/settings
{"persistent": {"plugins.ml_commons.allow_registering_model_via_url": true}
}
  1. 允许机器学习运行在任意节点
PUT _cluster/settings
{"persistent": {"plugins.ml_commons.only_run_on_ml_node": false}
}
  1. 禁用自动部署
PUT _cluster/settings
{"persistent": {"plugins.ml_commons.model_auto_deploy.enable": "false"}
}
3. 离线注册
POST /_plugins/_ml/models/_register
{"name": "sentence-transformers/msmarco-distilbert-base-tas-b","version": "1.0.1","description": "This is a port of the DistilBert TAS-B Model to sentence-transformers model: It maps sentences & paragraphs to a 768 dimensional dense vector space and is optimized for the task of semantic search.","model_task_type": "TEXT_EMBEDDING","model_format": "ONNX","model_content_size_in_bytes": 266291330,"model_content_hash_value": "a3c916f24239fbe32c43be6b24043123d49cd2c41b312fc2b29f2fc65e3c424c","model_config": {"model_type": "distilbert","embedding_dimension": 768,"framework_type": "huggingface_transformers","pooling_mode": "CLS","normalize_result": false,"all_config": "{\"_name_or_path\":\"old_models/msmarco-distilbert-base-tas-b/0_Transformer\",\"activation\":\"gelu\",\"architectures\":[\"DistilBertModel\"],\"attention_dropout\":0.1,\"dim\":768,\"dropout\":0.1,\"hidden_dim\":3072,\"initializer_range\":0.02,\"max_position_embeddings\":512,\"model_type\":\"distilbert\",\"n_heads\":12,\"n_layers\":6,\"pad_token_id\":0,\"qa_dropout\":0.1,\"seq_classif_dropout\":0.2,\"sinusoidal_pos_embds\":false,\"tie_weights_\":true,\"transformers_version\":\"4.7.0\",\"vocab_size\":30522}"},"created_time": 1676074079195,"model_group_id": "21en15IBr7hYQeyMk7-W","url": "http://192.168.113.85:8080/public/%e5%9f%ba%e7%a1%80%e7%bb%84%e4%bb%b6%e5%ae%89%e8%a3%85%e5%8c%85/Linux/OpenSearch/%e5%b0%8f%e6%a8%a1%e5%9e%8b/sentence-transformers_msmarco-distilbert-base-tas-b-1.0.1-onnx.zip"
}
  • 此处返回task id为QVe915IBr7hYQeyMO8Ci,模型id为RVe915IBr7hYQeyMPsAj。
查看注册状态
GET /_plugins/_ml/tasks/QVe915IBr7hYQeyMO8Ci

步骤 1(d):部署模型

POST /_plugins/_ml/models/RVe915IBr7hYQeyMPsAj/_deploy
获取部署状态
GET /_plugins/_ml/models/RVe915IBr7hYQeyMPsAj

第 2 步:使用神经搜索提取数据

创建ingest-pipeline

PUT /_ingest/pipeline/nlp-ingest-pipeline
{"description": "An NLP ingest pipeline","processors": [{"text_embedding": {"model_id": "RVe915IBr7hYQeyMPsAj","field_map": {"text": "passage_embedding"}}}]
}

新建索引

PUT /my-nlp-index
{"settings": {"index.knn": true,"default_pipeline": "nlp-ingest-pipeline"},"mappings": {"properties": {"id": {"type": "text"},"passage_embedding": {"type": "knn_vector","dimension": 768,"method": {"engine": "lucene","space_type": "l2","name": "hnsw","parameters": {}}},"text": {"type": "text"}}}
}

导入数据

PUT /my-nlp-index/_doc/1
{"text": "A West Virginia university women 's basketball team , officials , and a small gathering of fans are in a West Virginia arena .","id": "4319130149.jpg"
}PUT /my-nlp-index/_doc/2
{"text": "A wild animal races across an uncut field with a minimal amount of trees .","id": "1775029934.jpg"
}PUT /my-nlp-index/_doc/3
{"text": "People line the stands which advertise Freemont 's orthopedics , a cowboy rides a light brown bucking bronco .","id": "2664027527.jpg"
}PUT /my-nlp-index/_doc/4
{"text": "A man who is riding a wild horse in the rodeo is very near to falling off .","id": "4427058951.jpg"
}PUT /my-nlp-index/_doc/5
{"text": "A rodeo cowboy , wearing a cowboy hat , is being thrown off of a wild white horse .","id": "2691147709.jpg"
}

查看doc1

GET /my-nlp-index/_doc/1

关键字搜索

GET /my-nlp-index/_search
{"_source": {"excludes": ["passage_embedding"]},"query": {"match": {"text": {"query": "wild west"}}}
}

文档 3 未返回,因为它不包含指定的关键字。包含单词rodeo和的文档cowboy得分较低,因为未考虑语义含义。

模型神经搜索
GET /my-nlp-index/_search
{"_source": {"excludes": ["passage_embedding"]},"query": {"neural": {"passage_embedding": {"query_text": "wild west","model_id": "RVe915IBr7hYQeyMPsAj","k": 5}}}
}

这次,响应不仅包含所有五个文档,而且文档顺序也得到了改善,因为神经搜索考虑了语义含义。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…

未来之维,陈欣的智能CAD

第一章 新世界的曙光 在不远的未来,人类科技取得了前所未有的进步。人工智能不仅渗透到了生活的每一个角落,而且开始在科学研究、艺术创作乃至人类情感交流中扮演重要角色。在这个充满无限可能的时代,有一位年轻的女工程师——陈欣&#xff…

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译,这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…

2024 Rust现代实用教程:1.2编译器与包管理工具以及开发环境搭建

文章目录 一、Rust的编译器rustc二、开发环境搭建三、Rust的包管理工具Cargo四、项目结构1.Cargo.toml文件2.创建一个可执行文件项目3.创建一个库项目 参考 一、Rust的编译器rustc 查看版本 rustc-version编译生成二进制文件 rustc -o output filename filename.rs编译生成库…

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载 2024 年 10 月 28 日,Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作,为通知、邮件和消息生成摘要,体验交互更自然、功能更丰富的 Siri,使…

Kafka相关API开发

(一)引入依赖 用API直接去操作kafka(读写数据)在实际开发中用的并不多,学习它主要还是为了加深对Kafka功能的理解。kafka的读写操作,实际开发中,是通过各类更上层的组件去实现。而这些组件在读写kafka数据时,用的当然是kafka的jav…

Backtrader 数据篇 02

Backtrader 数据篇 本系列是使用Backtrader在量化领域的学习与实践,着重介绍Backtrader的使用。Backtrader 中几个核心组件: Cerebro:BackTrader的基石,所有的操作都是基于Cerebro的。Feed:将运行策略所需的基础数据…

Leetcode224 -- 基本计算器及其拓展

题目分析: 其实这个计算器的实现并不难,因为除了括号就剩下加减法嘛,括号肯定比加减法先执行,但是加减法是同级的,只是会改变数字的正负号而已,所以实现的逻辑并不是很难,我们只需要一个栈&…

【jvm】为什么Xms和Xmx的值通常设置为相同的?

目录 1. 说明2. 避免性能开销3. 提升稳定性4. 简化配置5. 优化垃圾收集6. 获取参数6.1 代码示例6.2 结果示例 1. 说明 1.-Xms 和 -Xmx 参数分别用于设置堆内存的初始大小(最小值)和最大大小。2.在开发环境中,开发人员可能希望快速启动应用程…

瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了

本文介绍瑞芯微RK3566/RK3568在Android11系统下,默认屏蔽导航栏/状态栏方法,使用触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0 R…

使用AIM对SAP PO核心指标的自动化巡检监控

一、背景 由于SAP PO系统维护成本较高,各类型异常报错等都需要人员进行时刻监控和响应,遂由AIM平台进行自动化巡检SAP PO的各指标,然后告警通知用户,节省维护成本和提高工作效率 二、核心指标监控 SAP PO失败消息 适用于S…

openpnp - 手工修改配置文件(元件高度,size,吸嘴)

文章目录 openpnp - 手工修改配置文件(元件高度,size,吸嘴)概述笔记parts.xmlpackages.xml 手工将已经存在的NT1,NT2拷贝出来改名备注END openpnp - 手工修改配置文件(元件高度,size,吸嘴) 概述 载入新板子贴片准备时,除了引入Named CSV文件,还要在ope…

Centos下安装Maven(无坑版)

Linux 安装 Maven Maven 压缩包下载与解压 华为云下载源,自行选择版本 下面的示例使用的是 3.8.1 版本 wget https://repo.huaweicloud.com/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz解压 tar -zxvf apache-maven-3.8.1-bin.tar.gz移…

算法:排序

排序算法 1. 简单排序1.1 直接插入排序1.2 冒泡排序1.3 简单选择排序 2. 希尔排序3. 快速排序4. 堆排序5. 归并排序 将文件的内容按照某种规则进行排列。 排序算法的稳定判定:若在待排序的一个序列中, R i R_i Ri​和 R j R_j Rj​的关键码相同&#xf…

Topaz Photo AI for Mac人工智能图像降噪软件 安装教程【保姆级教程,简单操作轻松上手】

Mac分享吧 文章目录 Topaz Photo AI for Mac人工智能图像降噪软件 安装完成,软件打开效果一、Topaz Photo AI 人工智能图像降噪软件 Mac电脑版——v3.3.0⚠️注意事项:1️⃣:下载软件2️⃣:安装软件,根据步骤完成操作…

k8s部署redis远程连接示例

一、环境 节点 IP 服务 master 192.168.126.46 docker、kubeadm、kubelet、kubectl、flannel、telnet node1 192.168.126.47 docker、kubeadm、kubelet、kubectl、flannel、telnet node2 192.168.126.48 docker、kubeadm、kubelet、kubectl、flannel、telnet ubunt…

ubuntu内核更新导致显卡驱动掉的解决办法

方法1,DKMS指定内核版本 用第一个就行 1,借鉴别人博客解决方法 2,借鉴别人博客解决方法 方法2,删除多于内核的方法 系统版本:ubuntu20.24 这个方法是下下策,如果重装驱动还是不行,就删内核在…

Apache Hive分布式容错数据仓库系统

Apache Hive™是一个分布式的、容错的数据仓库系统,它支持大规模的分析,并使用SQL方便地读取、写入和管理驻留在分布式存储中的pb级数据。 Apache Hive Apache Hive是什么 Apache Hive是一个分布式的、容错的数据仓库系统,支持大规模的分析…

运用AI视频拍摄技术生成3D场景:适用于建模、XR及文旅项目Demo制作

利用AI技术从拍摄的视频中生成3D场景,这种创新方法非常适合用于快速构建高质量的3D模型。生成的3D场景不仅能够用于建筑和设计行业的模型展示,还能应用于扩展现实(XR)技术的大空间体验开发。此外,在文化旅游领域&#…

论文提交步骤 | 2024年第五届MathorCup大数据竞赛

2024年第五届MathorCup数学应用挑战赛—大数据竞赛于2024年10月25日下午6点正式开赛。 论文和承诺书、支撑材料(可选)及计算结果文档由各参赛队队长电脑登录下方报名主页提交: https://www.saikr.com/vse/bigdata2024 初赛作品提交截止时间为…