Dify中固定递归字符文本分割器的chunk长度计算方式

本文主要从源码角度剖析了Dify中FixedRecursiveCharacterTextSplitter的chunk长度计算方式。

1.self._length_function(chunk)

源码位置:dify\api\core\splitter\fixed\_text\_splitter.py\FixedRecursiveCharacterTextSplitter类\split\_text方法\self.\_length\_function(chunk)

计算chunk长度的函数是self._length_function(chunk),在中英文还是其它的语言,这个长度是如何计算的呢?

刚开始没找到self.\_length\_function在哪里,经过分析发现就是EnhanceRecursiveCharacterTextSplitter.from\_encoder.\<locals>.\_token\_encoder

2.<locals>表示什么

在Python中,<locals>是一个特殊标记,用于指示一个函数或变量是在另一个函数的局部作用域内定义的。在这个上下文中,EnhanceRecursiveCharacterTextSplitter.from_encoder.<locals>._token_encoder表示_token_encoder函数是在EnhanceRecursiveCharacterTextSplitter类的from_encoder类方法内部定义的一个局部函数。当看到<locals>这样的标记时,它通常意味着正在查看的函数或变量是在一个封闭的作用域内定义的,而不是在全局作用域或类的顶层作用域内。这种方式常用于创建封装好的、只在特定函数内部可用的辅助函数或变量。

3.GPT2Tokenizer.get_num_tokens(text)

源码位置:dify\api\core\splitter\fixed\_text\_splitter.py\FixedRecursiveCharacterTextSplitter类\EnhanceRecursiveCharacterTextSplitter.from\_encoder.\<locals>.\_token\_encoder

通过使用gpt2分词器对文本进行编码,然后计算token的数量:

4.GPT2Tokenizer

merges.txtspecial_tokens_map.jsontokenizer_config.jsonvocab.json是构成GPT-2分词器的关键组件,它们各自的作用如下:

(1)merges.txt

此文件包含了用于构建GPT-2分词器的合并规则。GPT-2使用字节对编码(Byte Pair Encoding, BPE)方法来分词,merges.txt文件中列出了在训练过程中发现的最常见的字节对合并规则。这些规则用于将原始文本分割成更小的令牌,以便模型处理。

(2)special_tokens_map.json

此文件定义了特殊令牌(如开始、结束、未知令牌等)的映射。这些特殊令牌对于模型理解文本的结构和处理未知词汇至关重要。例如,开始和结束令牌可以帮助模型识别文本的起始和结束位置。

(3)tokenizer_config.json

此文件包含了分词器的配置信息,如是否添加特殊令牌、分词器的类型等。这些配置信息用于自定义分词器的行为,以适应不同的文本处理需求。

(4)vocab.json

此文件是一个词汇表,包含了模型训练过程中识别的所有唯一令牌及其对应的索引。在文本转换为模型可处理的数字表示时,vocab.json用于将文本中的令牌映射到其对应的索引值。

5.special_tokens_map.json文件

special_tokens_map.json文件解释如下**:**

{"bos_token": {"content": "<|endoftext|>","lstrip": 

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

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

相关文章

AutoHotKey自动热键(十一)下载SciTE4AutoHotkey-Plus的中文增强版脚本编辑器

关于AutoHotkey的专用编辑器, SciTE4AutoHotkey是一个免费的基于 SciTE 的 AutoHotkey 脚本编辑器,除了 DBGp 支持, 它还为 AutoHotkey 提供了语法高亮, 调用提示, 参数信息和自动完成, 以及其他拥有的编辑特性和辅助工具.XDebugClient 是一个基于 .NET Framework 2.0 的简单开…

buuctf-web

先输入127.0.0.1查找本地 得到网页目录&#xff0c;再输入127.0.0.1|ls查找下一级 得到php文件&#xff0c;127.0.0.1 | ls /返回上级目录 127.0.0.1 | cat /flag得到flag

如何提取视频中的音频?提取音频的几种方法

如何提取视频中的音频&#xff1f;提取视频中的音频&#xff0c;是许多人在处理多媒体内容时常遇到的需求。这一过程不仅仅是简单地从视听媒体中抽离音频部分&#xff0c;它背后蕴含着许多技术上的挑战和创意上的可能性。通过提取音频&#xff0c;你可以更方便地利用视频中的声…

object-C 解答算法:两数之和(leetCode-1)

两数之和(leetCode-1) 题目如下图:(也可以到leetCode上看完整题目,题号1) 解答方法一: 最简单的方法就是双指针遍历数组.代码如下 - (NSMutableArray *)sumOfTwoNumbers:(NSMutableArray *)array target:(int)target {NSMutableArray * resultArray [[NSMutableArray alloc…

【python】操作mysql数据库

一、操作步骤 MySQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它使用结构化查询语言&#xff08;SQL&#xff09;作为操作和管理数据的主要方式。MySQL具有以下特点&#xff1a; 开源&#xff1a;MySQL是开源软件&#xff0c;这意味着任何人…

数电基础 - 触发器

目录 ​编辑 一. 简介 二. SR锁存器 三. JK 触发器 四. D 触发器 五. 电平触发的触发器 六. 脉冲触发的触发器 七. 边沿触发的触发器 八 . 触发器的逻辑功能和描述方法 一. 简介 触发器是数字电路中的一种基本存储单元&#xff0c;具有记忆功能&#xff0c;能够存储一…

36.UART(通用异步收发传输器)-RS232(3)

&#xff08;1&#xff09;串口发送模块visio视图&#xff1a; &#xff08;2&#xff09;串口发送模块Verilog代码: /* 常见波特率&#xff1a; 4800、9600、14400、115200 在系统时钟为50MHz时&#xff0c;对应计数为&#xff1a; (1/4800) * 10^9 /20 -1 10416 …

macOS 安装软件提示 “已损坏,无法打开。 您应该将推出磁盘映像” 或 “已损坏,无法打开。 您应该将它移到废纸篓”,解决办法

本文以 Pulsar Assistant 软件为例进行介绍&#xff0c;Redisant 系列的其他软件同理&#xff0c;只需要根据不同软件修改下面命令中的软件名即可。 在 macOS 系统上安装 下载最新的.dmg包&#xff0c;双击打开安装程序&#xff0c;将软件拖动到下方的程序目录即可。 安装时报…

AWS Aurora Postgres 的开源替代品:存储和计算分离 | 开源日报 No.278

neondatabase/neon Stars: 13.0k License: Apache-2.0 Neon 是一个无服务器的开源替代品&#xff0c;用于 AWS Aurora Postgres。它将存储和计算分离&#xff0c;通过在节点集群中重新分配数据来替换 PostgreSQL 存储层。 提供自动扩展、分支和无限存储。Neon 安装包括计算节…

C#环境与数据类型

文章目录 C#环境.NET 框架集成开发环境 创建一个C#项目数据类型值类型引用类型对象类型object动态类型dynamic字符串类型string 指针类型 类型转换隐式转换显示转换&#xff08;强制转换&#xff09;C#提供的类型转换方法Convert类Parse方法TryParse方法 C#环境 .NET 框架 C#是…

pdf文件怎么转换为jpg图片?这几种转换方法操作起来很简单!

pdf文件怎么转换为jpg图片&#xff1f;在数字化洪流席卷职场的当下&#xff0c;PDF文档虽一度稳坐信息传输与储存的宝座&#xff0c;却逐渐显露出其在效率与便捷性追求中的疲态&#xff0c;随着技术疆界的不断拓宽&#xff0c;我们愈发深刻地意识到&#xff0c;PDF那复杂的格式…

逆向案例十八——某医药平台登录

网址&#xff1a;aHR0cHM6Ly91c2VyLjkxMTYwLmNvbS9sb2dpbi5odG1s 找到登陆包&#xff0c;发现用户和密码还有token都进行了加密 跟栈分析&#xff0c;进入第三个栈&#xff0c;找到加密位置。 找到加密位置&#xff0c;仔细分析。发现token$(#token).val(),根据之前的经验&…

如何利用windows本机调用Linux服务器,以及如何调用jupyter界面远程操控

其实这篇文章没必要存在&#xff0c;教程太多了 参考博客&#xff08;1 2 3&#xff09;&#xff0c;如侵删 奈何网上的大神总是会漏掉一些凡人遇到的小问题 &#xff08;1&#xff09; 建议下载PuTTy for windows&#xff0c;从而建立与远程服务器的SSH连接 需要确认目标服…

【RAGFlow】Ubuntu系统下实现源码启动RAGFlow

一、RAGFlow 是什么&#xff1f; RAGFlow 是一款基于深度文档理解构建的开源 RAG&#xff08;Retrieval-Augmented Generation&#xff09;引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程&#xff0c;结合大语言模型&#xff08;LLM&#xff09;针对用…

平价养猫最值得入的主食冻干,希喂生骨肉冻干喂养测评

不少猫主人反映&#xff0c;自家的猫咪体型偏瘦&#xff0c;体质较弱&#xff0c;尤其是在季节变换时更易出现问题&#xff0c;如敏感、掉毛严重、食欲下降等。听说生骨肉冻干富含营养且易于吸收&#xff0c;能显著改善猫咪体质&#xff0c;便纷纷尝试。然而&#xff0c;未加甄…

如何优雅的处理字节类型数据

原文:赵侠客 前言 字节&#xff08;Byte&#xff09;是计算机信息技术用于计量存储容量的一种基本单位&#xff0c;通常简写为B,1Byte8bit,在ASCII编码中1Byte可以表示一个标准的英文字符&#xff0c;包括大写字母、小写字母、数字、标点符号和控制字符等&#xff0c;共128个不…

nginx前端部署配置

nginx前端部署配置 Nginx部署项目 1、yarn build打包Vue项目 2、打开nginx.conf文件,配置对应的信息 nginx.conf location / {root C:\Users\17542\Desktop\rrpject-v2\dist;root index.html index.htm;try_files $uri $uri/ router; //解决页面刷新404问题 } location…

艾迈斯欧司朗最新推出的DURIS® LED将引领柔性多变照明新时代

中国 上海&#xff0c;2024年7月15日——全球领先的光学解决方案供应商艾迈斯欧司朗&#xff08;瑞士证券交易所股票代码&#xff1a;AMS&#xff09;今日宣布&#xff0c;艾迈斯欧司朗最新推出的DURIS E 2835 LED&#xff0c;实现从封装工艺到出光性能的升级与创新。这款LED采…

PyQt5图形界面--基础笔记

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip, QLabel, QLineEdit from PyQt5.QtGui import QIcon, QFont, QPixmap import sys https://www.bitbug.net/ 将图片转换为ico格式, 用来更改打包的文件图标 -F 只产生exe文件, 其他临时文件不产生 -…

K8S系列-Kubernetes基本概念及Pod、Deployment、Service的使用

一、Kubernetes 的基本概念和术语 一、资源对象 ​ Kubernetes 的基本概念和术语大多是围绕资源对象 Resource Object 来说的&#xff0c;而资源对象在总体上可分为以下两类: 1、某种资源的对象 ​ 例如节点 Node) Pod 服务 (Service) 、存储卷 (Volume&#xff09;。 2、…