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

AI知识补全(一):tokens是什么?

名人说:苔花如米小,也学牡丹开。——袁枚《苔》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

目录

很高兴你打开了这篇博客,更多AI知识,请关注我、订阅专栏《AI大白话》,内容持续更新中…

当我们与ChatGPT 或 DeepSeek这样的AI对话时,它们并不是按照我们熟悉的单词或字符来处理文本的,而是使用一种称为"Tokens"的基本单位

本文将以生动直观的方式带您了解"tokens",揭示它们如何成为人类语言与人工智能之间沟通的桥梁。

一、什么是Tokens?

在大语言模型(LLM)的世界里,Tokens是文本处理的基本单位

简单来说,Tokens就像是模型眼中的"原子",是无法再被分割的最小文本单元。但与我们通常理解的单词不同,Tokens可能是完整的单词、单词的一部分、标点符号,甚至是单个字符。

在这里插入图片描述

对于中文和英文等不同语言,Tokens的划分方式存在显著差异:

  • 英文:通常会将单词拆分为更小的部分。例如,“tokenization"可能被拆分为"token”、“ization”
  • 中文:由于汉字本身就具有较强的独立语义,所以一个汉字常常就是一个Token

我们可以试着想象一下,当我们阅读一本书时,我们看到的是完整的句子和单词。但AI大模型看世界的方式不同,它们把文本拆分成一块块小积木——这些就是"Tokens"。

Tokens就像是语言的积木,模型通过组合这些积木来理解和生成文本。

在这里插入图片描述

二、为什么Tokens如此重要?

理解Tokens的概念对于使用大语言模型至关重要,主要有以下几个原因:

1.模型的输入输出限制

所有LLM都有上下文窗口大小限制,这个限制以Tokens为单位计算。例如:

  • GPT-3.5的限制是4,096个Tokens
  • GPT-4的限制是8,192个Tokens
  • Claude 3 Opus的限制是200,000个Tokens

在这里插入图片描述

当我们提交过长的文本时,超出部分会被截断,导致模型无法获取完整信息

2.计费标准

使用 商业API时,大多按Tokens计费。例如:

  • 每1,000个输入Tokens收费$X
  • 每1,000个输出Tokens收费$Y

🌟注:了解文本会转化为多少Tokens,有助于控制成本。

3.性能影响

Tokens数量直接影响处理速度和内存占用

  • Tokens越多,处理时间越长
  • Tokens越多,所需计算资源越多

三、Tokens是如何生成的?

Tokens的生成过程称为"分词"(Tokenization),这是模型预处理阶段的重要步骤

  1. 分词器(Tokenizer)选择:不同模型使用不同的分词器,如BPE(Byte Pair Encoding)、WordPiece、SentencePiece等

在这里插入图片描述

  1. 训练过程:分词器通过在大量文本上训练,学习频繁出现的字符组合
  2. 词表构建:建立有限大小的词表(Vocabulary),通常包含数万个Tokens
  3. 文本转换:将输入文本转换为词表中Tokens的序列

例如,整体的拆分流程大致如下

在这里插入图片描述

以BPE为例,它会先将文本分割为单个字符,然后迭代地合并最常见的字符对,直到达到预定的词表大小。

四、不同语言的分词差异

各种语言在分词过程中表现出显著差异:

语言特点Tokens消耗
英文空格自然分隔,常见词汇占单个Token相对较少
中文无空格分隔,每个汉字通常是一个Token相对较多
日文混合汉字与假名,分词复杂较多
阿拉伯文连笔书写,词形变化复杂较多

举例来说:

  • 英文句子"I love programming"可能只需要3个Tokens
  • 而中文翻译"我爱编程"则需要4个Tokens
  • 日文翻译可能需要8个Tokens

在这里插入图片描述

再比如 中英文汉堡包🍔的token分解对比:

在这里插入图片描述

五、实践中的Tokens计算

为了更直观地理解Tokens的计算,以下是一些例子:

英文短句: "Hello, world!" ≈ 3 tokens
中文短句: "你好,世界!" ≈ 5 tokens
英文段落: 一段200字的英文文本 ≈ 150 tokens
中文段落: 一段200字的中文文本 ≈ 400 tokens
文本估计Tokens数
“你好!”3个 (包括标点)
“Hello!”2个 (包括标点)
一条朋友圈消息(30字)约35个
一页A4纸中文(500字)约600个
一页A4纸英文(500词)约650个

六、Tokens优化策略

了解了Tokens的工作原理后,我们可以采取一些策略来优化使用:

  1. 精简输入:移除不必要的文本,如重复说明、冗长的问候语
  2. 结构化信息:使用表格、JSON等结构化格式可能比文本描述更节省Tokens
  3. 分批处理:将长文本分成多个小块分别处理
  4. 针对不同语言调整:中文等亚洲语言需要预留更多Tokens空间
  5. 利用嵌入:对于频繁使用的长文本,可以考虑使用嵌入(embeddings)技术

七、Tokens与日常使用的关系

当你在使用ChatGPT、DeepSeek等AI工具时:

  • 聊天过程中模型开始"忘记"前文:这很可能是因为超出了Tokens限制
  • 回答突然中断:可能是生成的内容接近Tokens上限
  • 响应速度变慢:处理的Tokens越多,耗时越长

小结:tokens,AI处理文本的基本单位

在这里插入图片描述


Tokens是理解和高效使用大型语言模型的关键概念。它们决定了模型能处理的文本量、响应速度和使用成本。通过深入理解Tokens的工作原理,开发者和用户可以更有效地构建提示,优化交互流程,并充分发挥大语言模型的潜力。

希望这篇文章能帮助你更好地理解大语言模型中的Tokens概念,为你的AI应用开发提供有价值的参考!如果有什么想了解的知识,欢迎评论说出你的想法!


创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

相关文章:

AI知识补全(一):tokens是什么?

名人说:苔花如米小,也学牡丹开。——袁枚《苔》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Tokens?二、为什么Tokens如此重要?1.模型的输入输出限制2.…...

Wpf Avalonia-实现中英文切换工程

文章目录 language工程项目代码创建获取资源文件string工程图片主项目引用LanguageView中使用ViewModel中使用language工程项目 <Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><ImplicitUsings>enable</ImplicitUsings><TargetFrame…...

pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解决)

我在使用pyqt库的时候报错&#xff1a; qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in \ "/mnt/private_disk/anaconda3/envs/aot-manip/lib/python3.8/site-packages/PyQt5/Qt5/plugins/platforms" even though it was found. This ap…...

【MySQL数据库】触发器与事件

MySQL触发器 trigger&#xff0c;在表的插入insert、更新update、删除delete操作发生时自动执行MySQL语句。 学过Qt的都知道信号槽&#xff0c;一旦发出某个信号&#xff0c;那么就会触发关联的信号槽函数。触发器就类似于这个操作。 创建触发器时需要给出一些信息&#xff…...

【LC插件开发】基于Java实现FSRS(自由间隔重复调度算法)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【LC插件开发】基于Java实现FSRS&#xff08;自由间隔重复调度算法&#xff09;&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录…...

java后端接收数组,数组长度超256个就会报错

1.原因 DataBinder 中默认限制了list最大只能增长到256。 2.解决方案 1.在BaseController添加InitBinder方法&#xff0c;其余继承BaseController InitBinder //类初始化是调用的方法注解public void initBinder(WebDataBinder binder) {//给这个controller配置接收list的长…...

第45章:配置更新与应用热重载策略

第45章:配置更新与应用热重载策略 作者:DogDog_Shuai 阅读时间:约25分钟 难度:中级 目录 1. 引言2. 配置更新挑战3. Kubernetes原生配置更新机制4. 应用热重载技术5. 配置更新最佳实践...

数据库MVCC详解

MVCC 1.基本介绍 数据库&#xff1a;MySQL。【很多主流数据库都使用了MVCC&#xff0c;比如MySQL的InnoDB引擎、PostgreSQL、Oracle】 MVCC&#xff0c;全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。是数据库管理系统中的一种并发控制方法。 MVCC的…...

MySQL数据库基础篇

目录 SQL的分类 数据定义语言&#xff08;DDL&#xff09;---Data Definition Language 数据操作语言(DML) ---Data Manipulation Language 数据查询语言(DQL) ---Data Query Language 数据控制语言(DCL) ---Data Control Language 事务控制语言(TCL) --- Transaction Cont…...

Rust函数、条件语句、循环

文章目录 函数**语句与表达式**条件语句循环 函数 Rust的函数基本形式是这样的 fn a_func(a: i32) -> i32 {}函数名是蛇形风格&#xff0c;rust不在意函数的声明顺序&#xff0c;只需要有声明即可 函数参数必须声明参数名称和类型 语句与表达式 这是rust非常重要的基础…...

AI比人脑更强,因为被植入思维模型【17】万物联系思维模型

万物联系,万物,并不孤立。 定义 万物联系思维模型是一种强调世界上所有事物都相互关联、相互影响的思维方式。它认为任何事物都不是孤立存在的,而是与周围的环境、其他事物以及整个宇宙构成一个有机的整体。这种联系不仅包括直接的因果关系,还涵盖了间接的、潜在的、动态的…...

Android Compose 约束布局(ConstraintLayout、Modifier.constrainAs)源码深度剖析(十二)

Android Compose 约束布局&#xff08;ConstraintLayout、Modifier.constrainAs&#xff09;源码深度剖析 一、引言 在 Android 开发中&#xff0c;布局是构建用户界面的基础。随着 Android 开发技术的不断发展&#xff0c;Jetpack Compose 作为一种全新的声明式 UI 框架应运…...

【MySQL篇】复合查询

目录 前言&#xff1a; 1&#xff0c;多表查询 2&#xff0c;自连接 3&#xff0c;子查询 3.1&#xff0c;单行子查询 3.2&#xff0c;多行子查询 3.3&#xff0c;多列子查询 3.3&#xff0c;在from子句中使用子查询 4&#xff0c;合并查询 4.1&#xff0c;union …...

点亮STM32最小系统板LED灯

对于如何点亮板载LED灯只需要掌握如何初始化GPIO引脚&#xff0c;并改变GPIO引脚的电平即可实现点亮或者熄灭LED。 Led_INFO led_info {0}; led_info 是一个结构体变量&#xff0c;类型为 Led_INFO&#xff0c;用于存储LED的状态信息。这里初始化为 {0}&#xff0c;表示所有成…...

unsloth微调QwQ32B(4bit)

unsloth微调QwQ32B(4bit) GPU: 3090 24G unsloth安装部署 pip 安装 pip install unsloth --index https://pypi.mirrors.usrc.edu.cn/simplesource /etc/network_turbopip install --force-reinstall --no-cache-dir --no-deps githttps://github.com/unslothai/unsloth.git​…...

基于腾讯云大模型知识引擎×DeepSeek的高等职业学校单独招生二级学院考前咨询系统

1、主要思路 通过大模型知识引擎DeepSeek搭建高等职业学校单独招生二级学院考前咨询专有问答&#xff0c;使得专业老师能够更好的服务考试学生&#xff0c;有利于二级学院能够更好的进行考试宣传&#xff0c;招来优秀学子&#xff01; 2、创作过程 2.1、本地部署大模型的缺陷…...

【Linux】线程库

一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s &#xff0c;我的地址&#xff1a;0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…...

数组作为哈希表的妙用:寻找缺失的第一个正数

数组作为哈希表的妙用&#xff1a;寻找缺失的第一个正数 大家好&#xff0c;我是Echo_Wish&#xff0c;今天我们来探讨一个经典的算法问题——“缺失的第一个正数”。听起来可能有点简单&#xff0c;但它实际上是一个非常有意思且富有挑战性的题目&#xff0c;在面试中常常会碰…...

物化视图详解:数据库性能优化的利器

物化视图&#xff08;Materialized View&#xff09;作为数据库性能优化的核心手段&#xff0c;通过预计算和存储查询结果&#xff0c;显著提升了复杂查询的效率。本文将深入剖析物化视图的工作原理、应用场景及最佳实践&#xff0c;帮助企业在合适的场景中充分发挥其性能优势。…...

【C++】类和对象(匿名对象)

匿名对象 用 类型(实参) 定义出来的对象叫做匿名对象&#xff0c;相比之前我们定义的 类型 对象名(实参) 定义出来叫有名对象匿名对象生命周期只在当前一行&#xff0c;一般临时定义一个对象当前用一下即可&#xff0c;就可以定义匿名对象。 class A { public:A(int a 0):_a…...

一文读懂 GPT 与 BERT:预训练逻辑及差异剖析

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预训练语言模型GPT&#xff08;Generative Pretrained Transformer&#xff09;和 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;作为杰出代表&#xff0c;备受关注。本文将…...

【算法】十大排序算法(含时间复杂度、核心思想)

以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结&#xff0c;适用于面试快速回顾&#xff1a;排序算法对比表 排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想冒泡排序O(n)O(n)O(n)O(1)稳定相邻元素交换&#xff0c;大数沉底…...

渐进式滑坡多场信息演化特征与数据挖掘研究

标题:渐进式滑坡多场信息演化特征与数据挖掘研究 内容:1.摘要 摘要&#xff1a;在地质灾害频发的背景下&#xff0c;研究渐进式滑坡多场信息演化特征与数据挖掘具有重要的实际意义。本研究旨在深入探究渐进式滑坡在不同阶段的多场信息&#xff08;如应力场、位移场、渗流场等&…...

蓝桥杯备考-》单词接龙

很明显&#xff0c;这道题是可以用DFS来做的&#xff0c;我们直接暴力搜索&#xff0c;但是这里有很多点是我们需要注意的。 1.我们如何确定两个单词能接上&#xff1f; 比如touch和choose 应该合成为touchoose 就是这样两个单词&#xff0c;我们让一个指针指着第一个字符串…...

解锁C++模板参数:开启泛型编程新世界

目录 C++ 模板:编程世界的瑞士军刀 一、模板参数初相识 1.1 类型参数 1.2 非类型参数 1.3 模板模板参数 二、模板参数推导大揭秘 2.1 推导规则深度剖析 2.2 推导成功场景展示 2.3 推导失败场景解析 三、模板参数实战应用 3.1 通用算法实现 3.2 容器类设计 3.3 元…...

计算机视觉yolov8模型应用-学习笔记

计算机视觉yolov8模型应用-学习笔记 YOLOv8是由Ultralytics公司在‌2023年1月10日‌发布的一款深度学习模型。它是YOLOv5的重大更新版本&#xff0c;支持图像分类、物体检测和实例分割任务。这一版本在发布前就受到了广泛关注&#xff0c;并在发布后迅速成为目标检测领域的热门…...

【网络层协议】NAT技术内网穿透

IP地址数量限制 我们知道&#xff0c;IP地址&#xff08;IPv4&#xff09;是一个4字节32位的整数&#xff0c;那么一共只有2^32也就是接近43亿个IP地址&#xff0c;而TCP/IP协议栈规定&#xff0c;每台主机只能有一个IP地址&#xff0c;这就意味着&#xff0c;一共只有不到43亿…...

SQL中的索引是什么

在 SQL 中&#xff0c;索引&#xff08;Index&#xff09; 是一种用于加速数据检索的数据库对象&#xff0c;通过建立特定的数据结构&#xff08;如 B树、哈希表等&#xff09;&#xff0c;帮助数据库系统快速定位目标数据。以下是关于索引的详细分类、工作原理、使用场景和最佳…...

TensorFlow面试题及参考答案

目录 什么是 TensorFlow 的计算图?详细描述 TensorFlow 计算图的组成结构(节点、边、会话) 它与动态图(Eager Execution)的区别是什么?TensorFlow 静态计算图与动态图(Eager Execution)的区别及适用场景是什么? 解释张量(Tensor)的概念及其在 TensorFlow 中的作用…...

go-zero学习笔记

内容不多&#xff0c;只有部分笔记&#xff0c;剩下的没有继续学下去&#xff0c;包括路由与处理器、日志中间件、请求上下文 文章目录 1、go-zero核心库1.1 路由与处理器1.2 日志中间件1.3 请求上下文 1、go-zero核心库 1.1 路由与处理器 package mainimport ("github…...