Token到底是什么
看了 llm-wiki 关于 Token 的解释,终于理解了。
Token 不是字
之前一直以为 Token 就是字或者词,其实不是。Token 是模型处理文本的最小单位,可能是:
- 一个完整的词
- 一个字
- 一个词的一部分
- 甚至是一个空格
比如 “hello” 可能被分成 [“hel”, “lo”] 两个 Token。
为什么这样分?
因为词太多了,不可能每个词都给一个编号。把词拆成更小的单位,可以:
- 减少词表大小
- 处理没见过的词(新词可以用已有的 Token 组合)
中文的情况
中文的 Tokenization 比英文复杂。有的模型按字切分,有的按词切分,还有的混合。
试了一下 OpenAI 的 Token 计算器,发现中文的 Token 数量比想象的多。一个汉字可能要 2-3 个 Token。
实际影响
Token 数量影响:
- API 调用费用(按 Token 计费)
- 模型的上下文长度限制
- 处理速度
所以写 Prompt 的时候,简洁一点能省钱。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 PFZ7Z7 的学习笔记!