当前位置: 首页 > news >正文

做微站比较好的网站微信如何做模板下载网站

做微站比较好的网站,微信如何做模板下载网站,品牌策略包括哪些内容,整站seo公司在今天的文章里#xff0c;我是继上一篇文章 “Elasticsearch#xff1a;介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中#xff0c;你将学到如下的内容#xff1a; 从 Kaggle 下载 IMDB 数据集… 在今天的文章里我是继上一篇文章 “Elasticsearch介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中你将学到如下的内容 从 Kaggle 下载 IMDB 数据集创建两个推理服务部署 ELSER部署 e5-small创建摄取管道创建映射摄取 IMDB 数据在摄取过程中创建嵌入缩小查询负载模型运行示例检索器 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasticsearch 及 Kibana请参考如下的链接来进行安装 如何在 LinuxMacOS 及 Windows 上进行安装 ElasticsearchKibana如何在 LinuxMacOS 及 Windows上安装 Elastic 栈中的 Kibana 在安装的时候我们选择 Elastic Stack 8.x 来进行安装。在首次启动 Elasticsearch 的时候我们可以看到如下的输出 ​ 在上面我们可以看到 elastic 超级用户的密码。我们记下它并将在下面的代码中进行使用。 我们还可以在安装 Elasticsearch 目录中找到 Elasticsearch 的访问证书 $ pwd /Users/liuxg/elastic/elasticsearch-8.14.1/config/certs $ ls http.p12 http_ca.crt transport.p12 在上面http_ca.crt 是我们需要用来访问 Elasticsearch 的证书。 我们首先克隆已经写好的代码 git clone https://github.com/liu-xiao-guo/elasticsearch-labs 我们然后进入到该项目的根目录下 $ pwd /Users/liuxg/python/elasticsearch-labs/supporting-blog-content/introducing-retrievers $ ls retrievers_intro_notebook.ipynb 如上所示retrievers_intro_notebook.ipynb 就是我们今天想要工作的 notebook。 我们通过如下的命令来拷贝所需要的证书 $ pwd /Users/liuxg/python/elasticsearch-labs/supporting-blog-content/introducing-retrievers $ cp ~/elastic/elasticsearch-8.14.1/config/certs/http_ca.crt . $ ls http_ca.crt retrievers_intro_notebook.ipynb 安装所需要的 python 依赖包 pip3 install -qqq pandas elasticsearch python-dotenv 我们可以使用如下的方法来查看 elasticsearch 的版本 $ pip3 list | grep elasticsearch elasticsearch 8.14.0 创建环境变量 为了能够使得下面的应用顺利执行在项目当前的目录下运行如下的命令 export ES_ENDPOINTlocalhost export ES_USERelastic export ES_PASSWORDuK7WbkeXMzwk9YvP-H3 你需要根据自己的 Elasticsearch 设置进行相应的修改。 下载数据集 我们去到地址 IMDB movies dataset | Kaggle 下载数据集并解压缩。 $ pwd /Users/liuxg/python/elasticsearch-labs/supporting-blog-content/introducing-retrievers $ ls archive (13).zip http_ca.crt retrievers_intro_notebook.ipynb $ unzip archive\ \(13\).zip Archive: archive (13).zipinflating: imdb_movies.csv $ mkdir -p content $ mv imdb_movies.csv content/ $ tree -L 2 . ├── archive\ (13).zip ├── content │   └── imdb_movies.csv ├── http_ca.crt └── retrievers_intro_notebook.ipynb如上所示我们吧 imdb_movies.csv 文件置于当前工作目录下的 content 目录下。 代码展示 我们在当前项目的根目录下打入如下的命令 设置 import os import zipfile import pandas as pd from elasticsearch import Elasticsearch, helpers from elasticsearch.exceptions import ConnectionTimeout from elastic_transport import ConnectionError from time import sleep import time import logging# Get the logger for elastic_transport.node_pool logger logging.getLogger(elastic_transport.node_pool)# Set its level to ERROR logger.setLevel(logging.ERROR)# Suppress warnings from the elastic_transport module logging.getLogger(elastic_transport).setLevel(logging.ERROR) 连接到 Elasticsearch from dotenv import load_dotenvload_dotenv()ES_USER os.getenv(ES_USER) ES_PASSWORD os.getenv(ES_PASSWORD) ES_ENDPOINT os.getenv(ES_ENDPOINT) COHERE_API_KEY os.getenv(COHERE_API_KEY)url fhttps://{ES_USER}:{ES_PASSWORD}{ES_ENDPOINT}:9200 print(url)es Elasticsearch(url, ca_certs ./http_ca.crt, verify_certs True) print(es.info()) 如上所示我们的客户端连接到 Elasticsearch 是成功的。 部署 ELSER 及 E5 下面的两个代码块将部署嵌入模型并自动扩展 ML 容量。 部署及启动 ELSER from elasticsearch.exceptions import BadRequestErrortry:resp es.options(request_timeout5).inference.put_model(task_typesparse_embedding,inference_idmy-elser-model,body{service: elser,service_settings: {num_allocations: 64, num_threads: 1},},) except ConnectionTimeout:pass except BadRequestError as e:print(e) 如果你之前已经部署过 ELSER你可能会得到一个 resource already exists 这样的错误。你可以使用如下的命令来删除之前的 inference_id。 DELETE /_inference/my-elser-model 在运行完上面的命令后需要经过一定的时间下载 ELSER 模型。这个依赖于你的网络速度。我们可以在 Kibana 中进行查看 部署及启动 es-small try:resp es.inference.put_model(task_typetext_embedding,inference_idmy-e5-model,body{service: elasticsearch,service_settings: {num_allocations: 8,num_threads: 1,model_id: .multilingual-e5-small,},},) except ConnectionTimeout:pass except BadRequestError as e:print(e) 在运行完上面的代码后我们可以在 Kibana 界面中 点击上面的 Add trained model 来安装 .multilingual-e5-small 模型。 我们到最后能看到这个 整个下载及部署需要很长的时间需要你耐心等待 提示如果你的机器是在 x86 架构的机器上运行的话那么你在上面可以选择 .multilingual-e5-small_linux-x86_64 作为其 model_id。 检查模型部署状态 这将循环检查直到 ELSER 和 e5 都已完全部署。如果你在上面已经等了足够久的话那么下面的代码讲很快地执行。 如果需要分配额外容量来运行模型这可能需要几分钟 from time import sleep from elasticsearch.exceptions import ConnectionTimeoutdef wait_for_models_to_start(es, models):model_status_map {model: False for model in models}while not all(model_status_map.values()):try:model_status es.ml.get_trained_models_stats()except ConnectionTimeout:print(A connection timeout error occurred.)continuefor x in model_status[trained_model_stats]:model_id x[model_id]# Skip this model if its not in our list or it has already startedif model_id not in models or model_status_map[model_id]:continueif deployment_stats in x:if (nodes in x[deployment_stats]and len(x[deployment_stats][nodes]) 0):if (x[deployment_stats][nodes][0][routing_state][routing_state] started):print(f{model_id} model deployed and started)model_status_map[model_id] Trueif not all(model_status_map.values()):sleep(0.5)models [.elser_model_2, .multilingual-e5-small] wait_for_models_to_start(es, models) .elser_model_2 model deployed and started .multilingual-e5-small model deployed and started 创建索引模板并链接到摄取管道 template_body {index_patterns: [imdb_movies*],template: {settings: {index: {default_pipeline: elser_e5_embed}},mappings: {properties: {budget_x: {type: double},country: {type: keyword},crew: {type: text},date_x: {type: date, format: MM/dd/yyyy||MM/dd/yyyy[ ]},genre: {type: keyword},names: {type: text},names_sparse: {type: sparse_vector},names_dense: {type: dense_vector},orig_lang: {type: keyword},orig_title: {type: text},overview: {type: text},overview_sparse: {type: sparse_vector},overview_dense: {type: dense_vector},revenue: {type: double},score: {type: double},status: {type: keyword},}},}, }# Create the template es.indices.put_index_template(nameimdb_movies, bodytemplate_body) 创建采集管道 # Define the pipeline configuration pipeline_body {processors: [{inference: {model_id: .multilingual-e5-small,description: embed names with e5 to names_dense nested field,input_output: [{input_field: names, output_field: names_dense}],}},{inference: {model_id: .multilingual-e5-small,description: embed overview with e5 to names_dense nested field,input_output: [{input_field: overview, output_field: overview_dense}],}},{inference: {model_id: .elser_model_2,description: embed overview with .elser_model_2 to overview_sparse nested field,input_output: [{input_field: overview, output_field: overview_sparse}],}},{inference: {model_id: .elser_model_2,description: embed names with .elser_model_2 to names_sparse nested field,input_output: [{input_field: names, output_field: names_sparse}],}},],on_failure: [{append: {field: _source._ingest.inference_errors,value: [{message: {{ _ingest.on_failure_message }},pipeline: {{_ingest.pipeline}},timestamp: {{{ _ingest.timestamp }}},}],}}], }# Create the pipeline es.ingest.put_pipeline(idelser_e5_embed, bodypipeline_body) 提取文档 这将 进行一些预处理批量提取 10,178 条 IMDB 记录使用 ELSER 模型为 overview 和 name 字段生成稀疏向量嵌入使用 ELSER 模型为 overview 和 name 字段生成密集向量嵌入 使用上述分配设置通常需要一定的时间才能完成。这个依赖于你自己电脑的配置。 # Load CSV data into a pandas DataFrame df pd.read_csv(./content/imdb_movies.csv)# Replace all NaN values in DataFrame with None df df.where(pd.notnull(df), None)# Convert DataFrame into a list of dictionaries # Each dictionary represents a document to be indexed documents df.to_dict(orientrecords)# Define a function to generate actions for bulk API def generate_bulk_actions(documents):for doc in documents:yield {_index: imdb_movies,_source: doc,}# Use the bulk helper to insert documents, 200 at a time start_time time.time() helpers.bulk(es, generate_bulk_actions(documents), chunk_size200) end_time time.time()print(fThe function took {end_time - start_time} seconds to run) 我们可以在 Kibana 中进行查看 我们需要等一定的时间来完成上面的摄取工作。值得注意的是在上面的代码中我把 chunk_size 设置为 20。这个是为了避免 Connection timeout 错误。如果我们把这个值设置很大那么摄取的时间可能过长那么就会发生 Connection timeout 这样的错误。我们在批量处理时选择比较少的文档来完成摄取工作。有关如何设置这个 timeout 的时间我们可以参考文章 “在 Elasticsearch 中扩展 ML 推理管道如何避免问题并解决瓶颈”。 针对我的电脑它花费了如下的时间来完成 10,178 个文档的摄取 The function took 1292.8102316856384 seconds to run 这个将近20分钟。 缩小 ELSER 和 e5 模型 我们不需要大量的模型分配来进行测试查询因此我们将每个模型分配缩小到 1 个 for model_id in [.elser_model_2,my-e5-model]:result es.perform_request(POST,f/_ml/trained_models/{model_id}/deployment/_update,headers{content-type: application/json, accept: application/json},body{number_of_allocations: 1},) Retriever 测试 我们将使用搜索输入 clueless slackers 在数据集中的 overview 字段文本或嵌入中搜索电影 请随意将下面的 movie_search 变量更改为其他内容 movie_search clueless slackers Standard - 搜索所有文本 - bm25 response es.search(indeximdb_movies,body{query: {match: {overview: movie_search}},size: 3,fields: [names, overview],_source: False,}, )for hit in response[hits][hits]:print(f{hit[fields][names][0]}\n- {hit[fields][overview][0]}\n) kNN-搜索所有密集向量 response es.search(indeximdb_movies,body{retriever: {knn: {field: overview_dense,query_vector_builder: {text_embedding: {model_id: my-e5-model,model_text: movie_search,}},k: 5,num_candidates: 5,}},size: 3,fields: [names, overview],_source: False,}, )for hit in response[hits][hits]:print(f{hit[fields][names][0]}\n- {hit[fields][overview][0]}\n) text_expansion - 搜索所有稀疏向量 - elser response es.search(indeximdb_movies,body{retriever: {standard: {query: {text_expansion: {overview_sparse: {model_id: .elser_model_2,model_text: movie_search,}}}}},size: 3,fields: [names, overview],_source: False,}, )for hit in response[hits][hits]:print(f{hit[fields][names][0]}\n- {hit[fields][overview][0]}\n) rrf — 将所有事物结合起来 response es.search(indeximdb_movies,body{retriever: {rrf: {retrievers: [{standard: {query: {term: {overview: movie_search}}}},{knn: {field: overview_dense,query_vector_builder: {text_embedding: {model_id: my-e5-model,model_text: movie_search,}},k: 5,num_candidates: 5,}},{standard: {query: {text_expansion: {overview_sparse: {model_id: .elser_model_2,model_text: movie_search,}}}}},],window_size: 5,rank_constant: 1,}},size: 3,fields: [names, overview],_source: False,}, )for hit in response[hits][hits]:print(f{hit[fields][names][0]}\n- {hit[fields][overview][0]}\n) 所有的源码可以在地址 elasticsearch-labs/supporting-blog-content/introducing-retrievers/retrievers_intro_notebook.ipynb at main · liu-xiao-guo/elasticsearch-labs · GitHub 下载。
http://www.hkea.cn/news/14386211/

相关文章:

  • 服务支持型网站做网站还得买域名吗
  • 网站添加视频网站新闻页面无法翻页
  • 苏州地产网站建设公司企业免费网站系统
  • 微信开放平台网站应用网页制作基础教程第二版课后题
  • 怎么建立网站卖东西荆州网站建设流程
  • 网站未备案什么意思网页设计工作心得
  • wordpress获取文章自定义字段江门seo
  • ui设计好学吗岳阳seo外包
  • 做网站前端网址可以自己写吗网络推广外包想手机蛙软件
  • 太原市做网站做企业网站用哪个软件
  • 如何用凡科做网站化妆品网站优势
  • asp.net做网站实例沙坪坝网站建设哪家好
  • 网站二级域名设置高端女装有哪些品牌
  • 正能量视频素材免费下载网站网站建设制作公司
  • 广州最大网站建设WordPress防战工具
  • 网站建设设计流程图医院网站建设情况汇报
  • 定安网站建设微网站需要备案吗
  • 需要推销自己做网站的公司中国做跨境电商出口的网站
  • 站长推荐自动跳转导航入口科普文章在那个网站做
  • 珠海网站搭建客户资源网
  • 汉中网站开发如何建设一个国外网站
  • 徐汇集团网站建设农家乐网站规划与建设方案
  • 网站做电源做视频的背景音乐哪里下载网站
  • 做淘宝网站报告齐齐哈尔市网站建设
  • 如果我的网站被百度收录了_以后如何做更新争取更多收录电脑建网站
  • 义乌网站建设制作中天建设集团有限公司排名
  • 《电子商务网站建设 》如何设计一个自己的网页
  • 企业网站建设与实施调查报告seo优化常识
  • 网站备案 取名资讯通不过濮阳网站优化公司哪家好
  • 伪装学渣无极网站网站推广怎么做与发布