type
Post
status
Published
date
Jul 10, 2025
slug
summary
tags
DL
开发
思考
精选
category
知行合一
icon
password
本篇文章为AI对话总结,包含AI内容
Embedding 的终点是 Token 吗?RQ-KMeans 与推荐系统的新范式
推荐系统在过去十几年里几乎统一采用了一种表示方式:
embedding。无论是用户、商品、图片、文本还是视频,最终都会被编码成一个连续向量,
例如
user = [0.12, -0.53, 0.81, ...],item = [-0.22, 0.31, 0.44, ...]推荐模型只需要学习这些向量之间的关系即可。这种范式极其成功,从早期的矩阵分解到如今的大规模深度推荐模型,几乎所有系统都围绕着「向量表示 + 相似度计算」展开。
但如果稍微退一步看,会发现一个很有意思的问题:为什么推荐系统必须使用连续向量?
语言模型早已证明,复杂的语义世界完全可以由离散的token表示。文本是 token,代码是 token,甚至图像在一些模型中也被切分成 token。
那 embedding 本身有没有可能也被 token 化?如果可以,推荐系统会发生什么变化?
最近在生成式推荐(Generative Recommendation)领域出现的一个技术 —— RQ-KMeans,正好触碰到了这个问题。它的原始目的其实很简单:把连续 embedding 离散化为 token,从而让推荐系统可以像语言模型一样进行建模。但一旦你开始思考它的性质,就会逐渐意识到,这件事情可能远不止为了 LLM 兼容这么简单。
鉴于 RQ-KMeans 算法在线下操作的简便性、惊人的存储压缩比,以及无需反向传播的无参数特性,业界极易产生一种猜想,认为它是一剂“万金油”(Silver Bullet)。从直觉上看,似乎只需写一段简单的 Python 脚本,将任何深度学习模型输出的多模态 Embedding 塞进离线的 RQ-KMeans 聚类器中,就能毫无损耗地获得完美的离散语义 Token,并且能在不需要学习的前提下直接插入任何业务线。
在某种意义上,它像是在问一个更根本的问题:embedding 的终点,会不会其实是 token?
为什么人们开始尝试 Token 化 Embedding
embedding 之所以长期存在,是因为它在工程上非常好用。连续向量可以自然表达相似度,向量点积或 cosine 就能作为相关性度量,而且可以通过神经网络直接学习。但 embedding 也有明显的缺点。
首先是可解释性问题。embedding 的每一维都很难解释,例如
dimension_217 = 0.63 到底代表什么语义,很难回答。其次是系统结构问题。推荐系统和语言模型在表示层完全不同:推荐系统使用连续向量,而 LLM 使用离散 token。如果想用语言模型来做推荐,就必须先解决这个表示鸿沟。于是很多生成式推荐工作都提出了一个关键步骤:把 item embedding 转换为 token sequence。这样用户历史就可以表示为一串 token,接下来模型只需要像语言模型一样“预测下一个 token”。

RQ-KMeans 就是在这个背景下出现的一个非常关键的工具。
RQ-KMeans:把向量拆成 Token
RQ-KMeans 的全称是
Residual Quantized K-Means。它做的事情其实可以用一句话概括:用多个 K-Means codebook 逐步逼近一个向量。假设我们有一个 embedding
v,普通 K-Means 会找到一个 centroid c1 使得 v ≈ c1。但 RQ-KMeans 并不会停在这里,它会计算残差 r1 = v - c1,然后对残差再做一次 K-Means,找到 c2,继续计算新的残差 r2 = r1 - c2,不断重复这个过程。最终就可以得到一种分解形式:v ≈ c1 + c2 + c3 + ... + ck。每一个
ci 来自一个 codebook,因此可以用一个整数 id 表示。于是原本的 embedding 就可以表示为一串 token,例如 [132, 44, 892, 17]。换句话说,一个连续向量现在被转换成了一个离散 token 序列。这里最有意思的一点是:RQ-KMeans 并不需要训练神经网络。整个过程只依赖 K-Means,可以离线完成。这一点和很多离散表示学习方法(比如 VQ-VAE 或 RQ-VAE)不同,它们需要训练一个 encoder 和 decoder,而 RQ-KMeans 只是一个纯粹的量化过程。

如果 codebook 大小是
1024,层数是 4,那么 token 表达能力大约是 1024^4 ≈ 10^12 种组合,这已经足以表示非常复杂的语义空间。为什么 RQ-KMeans 看起来如此“强大”
第一次接触 RQ-KMeans 时,很容易产生一种感觉:它几乎像是一个万金油工具。任何 embedding —— 无论是文本、图像还是视频 —— 都可以被离散化成 token,而且完全不需要训练。这带来了一些非常诱人的可能性。
首先是存储压缩。一个
768 维的 float32 embedding 大约需要 3KB 存储,而一个 token 序列如果长度是 4,每个 token 用 int16 表示,总共只需要 8B。压缩比接近 400x。这对于大规模推荐系统来说几乎是革命性的。其次是系统统一。如果所有内容都变成 token,那么用户行为、文本内容、图像内容甚至商品属性都可以用同一种表示方式建模。推荐系统开始看起来更像一个语言系统,而不是一个向量系统。
再者是检索结构。如果 item 被表示为 token,那么我们可以直接构建
token → item 的倒排索引,这和搜索引擎的结构非常类似。某种程度上说,RQ-KMeans 让 embedding 空间重新回到了“词袋模型”的世界,只不过这里的词是从向量空间自动学习出来的。一个有趣的类比:Visual Words 的回归
如果你做过早期的计算机视觉研究,可能会觉得这一切似曾相识。十多年前的图像检索系统常常使用一种叫做 Bag of Visual Words 的方法。图像特征(如 SIFT)会被聚类成视觉词典,每个局部特征对应一个 visual word,然后整张图像就可以表示为一个词袋向量。
RQ-KMeans 在某种意义上就是这个思想的现代版本。不同的是,今天的输入不再是 SIFT,而是深度模型生成的 embedding;词典也不再是单层 K-Means,而是多层残差量化。但本质上,它们都在做一件事情:把连续空间划分成离散语义单元。

推荐系统是否可以直接使用这些 Token?
如果我们不考虑生成式推荐,仅仅站在传统推荐系统的角度,一个很自然的问题是:既然 embedding 可以被 token 化,那么推荐模型是否可以直接使用这些 token 作为特征?
理论上是完全可以的。原本的流程可能是
image → CLIP embedding → 推荐模型,现在可以变成 image → CLIP embedding → RQ-KMeans tokens → token embedding → 推荐模型。模型不再读取完整的 768 维向量,而是读取若干 token id。这样做有几个潜在好处。首先是系统解耦。embedding 模型可以不断升级,例如从 CLIP 升级到更大的多模态模型,而推荐系统只需要重新生成 token,而不需要改变模型结构。其次是特征共享。token 是离散的,因此不同模态甚至不同模型产生的 token 都可以放在同一个 embedding 表中学习。
但问题也同样明显:量化误差。embedding 被离散化之后必然会损失信息,这在粗粒度召回中可能问题不大,但在精细排序阶段就可能产生影响。因此一种更现实的做法往往是混合方案:token 用于召回或粗排,而完整 embedding 仍然用于最终排序。
RQ-KMeans 真的可以成为“万金油”吗?
到这里,RQ-KMeans 看起来已经非常强大。但如果仔细分析,它其实并不是万能的。首先,token 本身并不一定具有天然的语义解释。虽然我们可以观察某个 token 对应的样本集合,但它未必会稳定地代表某种语义,例如“蓝色天空”或者“动漫角色”。很多 token 只是向量空间中的一个分区,而不是一个真正的概念。
其次,token 之间并不一定具有组合语义。语言中的 token 可以组合成新的含义,但 RQ-KMeans token 只是残差分解的结果,
[132, 44] 并不一定具有可解释的组合关系。它们更像是一种编码方式,而不是语言。最后是分布问题。K-Means 本身对数据分布非常敏感,如果 embedding 空间存在严重的长尾或者聚类不均匀,那么 codebook 的质量可能会受到影响,从而影响 token 表示的稳定性。
因此更合理的结论可能是:RQ-KMeans 是一个非常强的工程工具,但不是语义建模的终极方案。
一个可能非常有趣的系统:Token 可解释工具
不过在实践中,RQ-KMeans 还有一个非常有意思的潜在用途。假设我们有大量图片或文本数据,我们可以先用多模态模型生成 embedding,然后使用 RQ-KMeans 将其转换为 token 序列。接下来可以建立一个简单的索引结构:
token → items。然后构建一个网页工具,允许我们点击某个 token,例如
token_132,系统就会展示所有包含该 token 的图片或文本样本。很快你就会发现,一些 token 往往会对应某种潜在语义,比如“蓝色天空”“动漫角色”“猫咪”。这其实是一种无监督语义发现过程。
进一步地,如果用户上传一张图片,我们可以计算 embedding 并生成 token,然后通过 token 匹配直接召回相似内容。这就构成了一个非常轻量级的多模态搜索系统。整个系统甚至不需要训练推荐模型,只需要 embedding 模型和 RQ-KMeans。
Embedding 的终点,真的会是 Token 吗?
讨论到这里,也许可以回到最开始的问题。embedding 的终点会不会是 token?
短期来看,embedding 仍然是推荐系统的核心表示,因为连续空间在相似度建模方面非常自然,而且神经网络可以直接优化它。但长期来看,token 化表示可能会越来越重要,尤其是在以下几个场景:生成式推荐、跨模态统一表示、大规模向量压缩以及可解释检索系统。
如果推荐系统最终越来越接近语言模型的结构,那么用户行为序列、内容表示甚至推荐目标都可能逐渐变成 token 序列。模型的任务不再是计算向量相似度,而是预测 token。
这听起来有些激进,但历史经验告诉我们,表示方式的变化往往会带来范式变化。也许有一天,我们回头看今天的 embedding 系统,会像今天看早期的特征工程一样:那只是一个过渡阶段。
而 RQ-KMeans,可能只是这个变化的第一块拼图。
- Author:YelloooBlue
- URL:https://tangly1024.com/article/31fe32f0-1b7f-8068-a240-da2e908bc690
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










