最近在研究AI大模型,到处都看到"Token"这个词,什么"消耗了多少Token"、“上下文Token限制"之类的。查了一下中文叫"词元”?
几个问题想请教:
- 词元到底是什么?是一个字算一个词元吗?
- Token怎么读?还是有标准读法?
- 为什么不直接叫"字数"而要搞个词元的概念?
小白求科普,越通俗越好。
最近在研究AI大模型,到处都看到"Token"这个词,什么"消耗了多少Token"、“上下文Token限制"之类的。查了一下中文叫"词元”?
几个问题想请教:
小白求科普,越通俗越好。
做NLP的来回答一下。
词元(Token)是大模型处理文本的最小单位,但它不等于一个字或一个词。模型在处理文本之前,会先用一个叫"分词器(Tokenizer)"的工具把文字切成一段段的词元。
举几个例子你就懂了:
print("hello") → [“print”, “(”, “hello”, “)”] = 4个词元所以同样的意思,中文消耗的词元通常是英文的2-3倍,这就是为什么用中文调API比英文贵。
读音的话,英文原音是Token,中文直接叫"词元"就行。2024年国家标准已经把Token的中文术语定为"词元"了。
简单理解:词元就是AI的"计费单位",跟手机流量的MB差不多
我之前也搞不懂,后来发现一个好办法——OpenAI有个在线的Tokenizer工具,你把一段话贴进去,它会用不同颜色标出每个词元的边界。一试就明白了。中文确实亏,"我今天很开心"这6个字被切成了8个词元,英文"I am happy today"才4个词元
补充一些深层逻辑,帮你从根本上理解词元。
为什么不直接用"字数"?
因为大模型不是按字处理文本的。它的"大脑"——也就是神经网络——需要把文字转成数字才能计算。词元就是这个转换过程的中间产物。
具体流程是这样的:
不同模型的词元不一样
GPT-4、Claude、通义千问用的分词器都不同,所以同一句话在不同模型里被切成的词元数也不同。比如"人工智能"在GPT-4里可能是2个词元,在某些国产模型里可能是1个词元(因为国产模型的分词器对中文做了优化)。
为什么词元数量很重要?
两个原因:
所以你会看到大家讨论"这个模型支持200K词元上下文"、“这次对话消耗了5000词元”,说的都是这个概念。
最后关于叫法——在正式技术文档里建议用"词元",口语里说Token也行。就像CPU大家都叫CPU不叫"中央处理器"一样。
作为一个非技术的产品经理,我用最土的方式理解词元:就把它想成"AI读了几口饭"。每口饭就是一个词元。中文字笔画多,AI嚼起来费劲,一个字可能要嚼一两口。英文字母简单,几个字母一口就吞了。所以中文费词元(费钱),英文省词元(省钱)。
秒懂了!原来词元不等于字数,而且中文比英文贵是因为分词的问题。那请问一下,有没有什么办法减少词元消耗?比如说话简洁点有用吗?
回答楼主的追问,减少词元消耗确实有一些技巧:
不过说实话,现在词元价格越来越便宜了,Deepseek百万词元才1块钱,没必要太抠门。
终于有人讲清楚了,之前一直迷糊