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

网站小程序开发公司策划案网站

网站小程序开发公司,策划案网站,六安网站建设,物流业网站建设方案实验总结推理端点对一次可处理的文本量有限,具体取决于模型的输入容量。分块(Chunking) 是指将输入文本拆分成符合这些限制的小块的过程,在将文档摄取到 semantic_text 字段时会进行分块。分块不仅有助于保持输入文本在可处理范围内&#…

推理端点对一次可处理的文本量有限,具体取决于模型的输入容量。分块(Chunking) 是指将输入文本拆分成符合这些限制的小块的过程,在将文档摄取到 semantic_text 字段时会进行分块。分块不仅有助于保持输入文本在可处理范围内,还能使内容更加易读。相比返回一整篇长文档,在搜索结果中提供最相关的文本片段更有价值。

每个分块都会包含 文本片段 以及 从中生成的对应嵌入

默认情况下,文档会被拆分为 句子(sentence),然后按 最多 250 个单词 进行分组,并且设置 1 句重叠,使得每个分块都会与前一个分块共享一个句子。这种重叠方式可以保持上下文的连续性,防止重要信息因硬性拆分而丢失。

Elasticsearch 使用 ICU4J 库来检测单词和句子的边界。在确定单词边界时,该库遵循一系列规则,而不仅仅依赖空格字符。对于像 中文或日文 这类不使用空格分隔单词的书写语言,系统会利用 字典查找 来识别单词边界。

分块策略

Elasticsearch 提供了 两种分块策略句子策略(sentence)单词策略(word)

  • 句子策略(sentence)
    该策略按 句子边界 拆分文本,每个分块包含一个或多个完整的句子,以确保句子级别的语境完整性。

    • 若某个句子导致分块超出 max_chunk_size 设定的单词数上限,该句子会被拆分至多个分块中。
    • sentence_overlap 选项控制前一个分块中的 多少个句子 应该包含在当前分块中,可选值为 0 或 1
  • 单词策略(word)
    该策略按 单词 拆分文本,直至 max_chunk_size 限制。

    • overlap 选项控制当前分块应包含前一个分块中的 多少个单词

默认分块策略句子策略(sentence)

注意:对于 8.16 版本之前创建的推理端点,默认的分块策略是 单词策略(word)

可以在文章 “Elasticsearch:使用阿里 infererence API 及 semantic text 进行向量搜索” 查看更为详尽的示例。

安装

Elasticsarch 及 Kibana

 我们首先需要安装 Elasticsearch 及 Kibana。我们可以参考如下的文章来进行安装:

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

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

当我们安装的时候,选择 Elastic Stack 8.x 的文章来进行安装。在本展示中,我们将使用 Elastic Stack 8.17.2 来进行展示。当我们首次运行 Elasticsearch 时,我们可以看到如下的界面:

请记下上面的 elastic 超级用户的密码,以备在下面进行使用。

下载代码

为了展示方便,我们在地址 https://github.com/liu-xiao-guo/elasticsearch-labs/blob/main/notebooks/document-chunking/configuring-chunking-settings-for-inference-endpoints.ipynb下载最新的代码。

拷贝证书

为了能够使得我们的代码能够正常工作,我们必须拷贝 Elasticsearch 的证书:

cp ~/elastic/elasticsearch-8.17.2/config/certs/http_ca.crt .
$ pwd
/Users/liuxg/python/elasticsearch-labs-liuxg/notebooks/document-chunking
$ cp ~/elastic/elasticsearch-8.17.2/config/certs/http_ca.crt .

创建一个 .env 文件

我们还需要创建一个叫做 .env 的本地文件,并置于项目的根目录下:

ES_USER="elastic"
ES_PASSWORD="zhHdJmd5oBEVwEfoH2Cr"
ES_ENDPOINT="localhost"
$ pwd
/Users/liuxg/python/elasticsearch-labs-liuxg/notebooks/document-chunking
$ cat .env
ES_USER="elastic"
ES_PASSWORD="zhHdJmd5oBEVwEfoH2Cr"
ES_ENDPOINT="localhost"

你需要根据自己的 Elasticsearch 安装进行相应的修改。

安装 Python 依赖项

pip3 install elasticsearch python-dotenv 

安装  ELSER 模型

你可以参考文章 “部署 ELSER - Elastic Learned Sparse EncoderR”。最后,我们可以看到如下的页面:

代码展示

我们使用 jupyter 打开我们的笔记本:

jupyter notebook configuring-chunking-settings-for-inference-endpoints.ipynb

建立 Elasticsearch 客户端连接

from elasticsearch import Elasticsearch
from dotenv import load_dotenv
import osload_dotenv()ES_USER= os.getenv("ES_USER")
ES_PASSWORD = os.getenv("ES_PASSWORD")
ES_ENDPOINT = os.getenv("ES_ENDPOINT")url = f"https://{ES_USER}:{ES_PASSWORD}@{ES_ENDPOINT}:9200"
client = Elasticsearch(url, ca_certs = "./http_ca.crt", verify_certs = True)print(es.info())

创建推理端点对象

让我们使用 Create Inference API 创建推理端点。

在此示例中,你将为 ELSER 集成创建一个推理端点,该端点将在你的集群中部署 Elastic 的 ELSER 模型。对于任何具有嵌入任务类型的推理端点,分块设置都是可配置的。完整的可用集成列表可在 Create Inference API 文档中找到。

要配置分块设置,请在请求体中包含一个 chunking_settings 映射,其中包含 strategy 值以及所选分块策略的任何必需值。在本示例中,你将为 sentence 策略配置分块设置,最大分块大小为 25 个单词,每个分块与前一个分块重叠 1 个句子。有关可用分块策略及其可配置值的更多信息,请参阅分块策略文档。

import requeststry: client.inference.put(task_type="sparse_embedding",inference_id="my_elser_endpoint",body={"service": "elasticsearch","service_settings": {"num_allocations": 1,"num_threads": 1,"model_id": ".elser_model_2",},"chunking_settings": {"strategy": "sentence","max_chunk_size": 25,"sentence_overlap": 1,},},)
except Exception as e:print(f"Error: {e}")

创建索引

要查看你配置的分块设置如何生效,需要将文档摄取到索引的 semantic_text 字段中。让我们创建一个索引,其中包含一个 semantic_text 字段,并将其链接到上一步创建的推理端点。

client.indices.create(index="my_index",mappings={"properties": {"infer_field": {"type": "semantic_text","inference_id": "my_elser_endpoint",}}},
)

摄入一个文档

现在,让我们将一个文档摄取到上一步创建的索引中。

注意:Elasticsearch 在创建推理端点时会启动 ELSER 模型部署,分配节点可能需要一些时间。在执行以下请求之前,你需要等待部署被分配到节点。

client.index(index="my_index",document={"infer_field": "This is some sample document data. The data is being used to demonstrate the configurable chunking settings feature. The configured chunking settings will determine how this text is broken down into chunks to help increase inference accuracy."},
)

查看分块

生成的分块及其对应的推理结果存储在索引中文档的 _inference_fields 元字段下的 chunks 键中。这些分块以字符偏移值列表的形式存储。让我们查看在上一步摄取文档时生成的分块。

为了能够看得清楚我们的分块,我们在 Kibana 中使用如下的命令:


文章转载自:

http://cEQToNMd.bmqLs.cn
http://DgGGVhVg.bmqLs.cn
http://DmvzWnPp.bmqLs.cn
http://L9cxtqV5.bmqLs.cn
http://8SWn66ea.bmqLs.cn
http://9kCxW55W.bmqLs.cn
http://gmTIGSCO.bmqLs.cn
http://ossD53XD.bmqLs.cn
http://ZOmhu88r.bmqLs.cn
http://Fc8Iy8Bn.bmqLs.cn
http://cx2QkN4p.bmqLs.cn
http://ISBX3b4b.bmqLs.cn
http://Zp1lvkd1.bmqLs.cn
http://lC7m4CtA.bmqLs.cn
http://O3r4LD7i.bmqLs.cn
http://7I1J5JrX.bmqLs.cn
http://zfiiNH9i.bmqLs.cn
http://cwnvjT6E.bmqLs.cn
http://MsviiZEz.bmqLs.cn
http://482tOMhf.bmqLs.cn
http://V1ieWYMC.bmqLs.cn
http://KJaWtTr9.bmqLs.cn
http://EkKfYqcf.bmqLs.cn
http://vGsAO2tC.bmqLs.cn
http://IHMpPM2e.bmqLs.cn
http://B0T7doPL.bmqLs.cn
http://1dRcEj3i.bmqLs.cn
http://KYEiyBDd.bmqLs.cn
http://z5Cz960c.bmqLs.cn
http://Yco8Rg0z.bmqLs.cn
http://www.dtcms.com/wzjs/678603.html

相关文章:

  • 手机网站打开自动wap网站开发需要python 吗
  • 制作关于灯的网站宁波专业平台网站建设
  • 凡科网站建设分类模块怎么弄竣工验收全国公示平台
  • 哈尔滨建设公司网站太原关键词网站排名
  • 广东省 网站建站建设网站是什么模式
  • 网站开发设计公司简介国内crm
  • 网站想做个链接怎么做的安卓程序开发用什么软件
  • 哪个网站做汽车分期卖机械设备什么网站做推广好
  • 辽宁省建设机械协会官方网站辽宁建设工程信息网招标
  • 苏州建设信息网站做艺人资料卡的网站
  • 徐州哪有做网站的建设网站如何加入搜索
  • 万宁市住房和城乡建设局网站wordpress和discuz对比
  • asp网站 会员注册如何建立自己免费网站
  • 网站建设技术教程视频外链网站 英文
  • 南通网站制作怎样官方网站是什么
  • 做网站在哪个地方买空间成武网站建设
  • 建网站有哪些费用男女做那种的视频网站
  • 河南网站定制网站排版工具
  • 建设网站能赚钱淘客做网站有必要吗
  • 网站营销外包如何做站长网seo综合查询工具
  • 专门做护理PDCA的网站广东睿营建设有限公司网站
  • 免费注册网站免登录wordpress企业主题哥
  • 天津和平做网站多少钱j动态加载网站开发
  • 帮助做APP的网站公司软件开发过程管理
  • 外汇跟单网站建设邯郸启涵电子商务有限公司
  • wordpress xmlseo深圳seo推广外包
  • dedecms后台程序已经安装完了怎么把自己的网站加进去?企业建站公司怎么创业
  • 电子游艺网站开发泉州安全教育平台
  • 有什么网站是学做吃的怎么seo网站推广
  • 怎么用云服务器做网站柯林wap建站