返回术语

AI

词元Token

你可能会问

词元到底是什么?模型读我的话,读到的真的是一个个字吗?

简单来说

模型切分和处理文本的最小单位,并非每个字就是一个词元:英文约 4 个字符合一个词元,中文一个字通常要占一到两个,视模型而定。上下文窗口容量和调用费用都按词元数计算。

动态说明模型读到的不是字,是词表里的编号Token
常见词整个一条,其余拆小块
它读的是编号,不是字
模型肚子里有一本固定的词表,几万到十几万条,每条是一小段文字配一个编号。你的话进来先对着词表切成片段——常见词整个一条,词表里没有的拆成小碎片——再换成编号交给模型;模型算出来的也是编号,最后换回文字。这一条条片段就是词元。(图中编号为示意)

01 · 先这样理解

把抽象概念放进真实场景

模型切分和处理文本的最小单位,并非每个字就是一个词元:英文约 4 个字符合一个词元,中文一个字通常要占一到两个,视模型而定。上下文窗口容量和调用费用都按词元数计算。

换个角度想

像乐高:一套只有固定的几百种零件,你想拼的任何东西都得先拆成这些零件——常见形状有现成的整块,奇怪的形状只能拿小零件凑。词表就是零件清单,词元就是零件;模型从头到尾只跟零件打交道,看不见你原来画的图。

02 · 点击演示

「帮我总结这份报告」发出去,模型收到的是什么?

突出显示的部分,就是当前概念在整条流程中负责的位置。

  1. 你发给模型的

    原文「帮我总结这份报告」

    你眼里8 个字

    你发给模型的

    原文strawberry 里有几个 r?

    你眼里10 个字母,一眼数出 3 个 r

    当前步骤
  2. 对着词表切:「总结」「报告」是常见词,各整个一条

    总结报告

    对着词表切:strawberry 整个不在词表里,拆成三段

    strawberry

    等待进入
  3. 模型收到 6 个编号:6 · 13 · 1552 · 27 · 310 · 2087——从这里起它看不到字
    模型收到 3 个编号:496 · 1027 · 15717——里面没有任何一个字母 r
    等待进入
  4. 6 词元窗口扣 6 格,账单按 6 算,不按 8 个字回答也是一个编号接一个蹦出来,再换回文字
    答错不奇怪它只见过 str、aw、berry 三块,没见过字母凡是要看字内部的活——数字母、倒着拼——词元都是天然障碍
    等待进入
1 / 4

Input · 你输入一句话

03 · 放进真实任务

什么时候会遇到它

数不清字母

问 strawberry 有几个 r 会答错——模型看到的是 str、aw、berry 三块编号,里面没有单个字母。

费用对不上

按字数估的账单总是不准——生僻词、代码、符号都会被拆成更多词元。

窗口提前满

「我才写了两千字怎么就满了?」窗口装的是词元,在不少模型里一个汉字要占不止一个。

04 · 想一想

用一个问题检查理解

同样一百字,中文和英文哪个占的词元多?为什么按「字数」估算费用经常翻车?

查看答案

取决于模型的词表:英文约 4 个字符合一个词元;中文在不少模型里一个字要占一到两个,所以同样字数中文往往更费。字数和词元数没有固定换算,估算要用模型厂商的 tokenizer 工具实测。

老师提醒

最容易踩的坑

别用字数去估窗口和费用,差几倍都正常。拿不准就用模型厂商的 tokenizer 工具实测,再决定要不要精简。

⌘K搜索知识库

最近收录

正在载入知识索引…