换个角度想
像乐高:一套只有固定的几百种零件,你想拼的任何东西都得先拆成这些零件——常见形状有现成的整块,奇怪的形状只能拿小零件凑。词表就是零件清单,词元就是零件;模型从头到尾只跟零件打交道,看不见你原来画的图。
术语 · AI
Token
模型切分和处理文本的最小单位,并非每个字就是一个词元:英文约 4 个字符合一个词元,中文一个字通常要占一到两个,视模型而定。上下文窗口容量和调用费用都按词元数计算。
模型读到的不是字,是词表里的编号
像乐高:一套只有固定的几百种零件,你想拼的任何东西都得先拆成这些零件——常见形状有现成的整块,奇怪的形状只能拿小零件凑。词表就是零件清单,词元就是零件;模型从头到尾只跟零件打交道,看不见你原来画的图。
原文「帮我总结这份报告」
你眼里8 个字
原文strawberry 里有几个 r?
你眼里10 个字母,一眼数出 3 个 r
对着词表切:「总结」「报告」是常见词,各整个一条
帮我总结这份报告
对着词表切:strawberry 整个不在词表里,拆成三段
strawberry
你输入一句话
问 strawberry 有几个 r 会答错——模型看到的是 str、aw、berry 三块编号,里面没有单个字母。
按字数估的账单总是不准——生僻词、代码、符号都会被拆成更多词元。
「我才写了两千字怎么就满了?」窗口装的是词元,在不少模型里一个汉字要占不止一个。
同样一百字,中文和英文哪个占的词元多?为什么按「字数」估算费用经常翻车?
取决于模型的词表:英文约 4 个字符合一个词元;中文在不少模型里一个字要占一到两个,所以同样字数中文往往更费。字数和词元数没有固定换算,估算要用模型厂商的 tokenizer 工具实测。
别用字数去估窗口和费用,差几倍都正常。拿不准就用模型厂商的 tokenizer 工具实测,再决定要不要精简。