最近在企业实习,调研多模态大模型 + 推荐系统的相关工作。mentor 提到一个非常核心的问题:多模态大模型生成的 embedding 是连续的,而传统推荐系统需要离散的语义 ID 才能工作。
听到这个问题,我脑袋里充满了疑惑:
- 什么是语义 ID?它是怎么生成的?
- 传统推荐系统为什么需要离散的 ID?
- 多模态大模型生成 embedding 的原理是什么?
- 连续的 embedding 又是如何变成离散 ID 的呢?
疑问 1:语义 ID 是什么?
起点:语义 ID 是什么东西?为什么叫它“语义”ID?
解答:
语义 ID(Semantic ID)可以理解成商品的“语义指纹”。它是一串离散的符号序列,比如类似 "A3B9C2" 这种固定长度的字符串。它的本质是用离散的形式编码商品的语义信息,相似的商品拥有相似的 ID。
举个例子:
假设我们有两件商品——一件蓝色连衣裙和一件绿色连衣裙。通过语义 ID 的映射,它们可能分别对应 "A3B9" 和 "A3B8"。从这些 ID 中,我们可以看出它们属于同一大类(连衣裙),但在颜色上有微小的差异。
那么,语义 ID 是如何生成的呢?
- 输入:商品的多模态信息,例如文本(标题、描述)和图像(商品图片)。
- 处理:将这些信息转换成向量表示(embedding),再通过量化方法将连续向量变成离散 ID。
- 输出:一串固定长度的符号序列。
技术实现:
- 假设一个商品的 embedding 是
[0.3, -0.7, 1.2]这样的连续向量,我们可以通过量化技术(比如哈希映射)找到与其最近的离散符号,最终生成 ID。
为什么叫“语义”ID?
因为这种 ID 是从商品的语义信息中提取出来的,能够反映商品的核心特征。
疑问 2:传统推荐系统为什么需要离散的语义 ID?
起点:多模态大模型可以生成连续 embedding,为什么传统推荐系统一定要用离散的语义 ID?
解答:
传统推荐系统讲究的是高效性和可扩展性,而离散的语义 ID 正是实现这些目标的关键。
传统推荐系统的工作流程:
- 召回阶段:
系统会根据用户的兴趣,从海量商品中快速筛选出一个小集合(比如从 1 亿商品中召回 1000 个候选商品)。- 技术上,召回通常依赖倒排索引(类似搜索引擎)。离散的语义 ID 可以直接通过哈希索引快速定位到相似商品,召回的速度非常快。
- 排序阶段:
对召回的商品进行精细打分,挑选出最优的推荐结果。这一步可能会用到更复杂的模型(比如深度学习)。
离散语义 ID 的优势:
- 空间 - 存储高效:离散 ID 的存储成本很低,1 亿商品的 ID 索引可能只需要 100MB 数据,而连续 embedding 则可能需要 10GB 以上的存储空间。
- 时间 - 检索快速:哈希查找的复杂度是 O(1),比起连续向量的相似度计算(复杂度 O(n))要快得多。
疑问 3:多模态大模型如何生成连续 embedding?
起点:多模态大模型是如何“理解”商品的,又是怎么生成这些连续 embedding 的?
解答:
多模态大模型的强大之处在于,它能够融合商品的多种模态信息(文本、图像等),用一个连续向量(embedding)来表示商品的语义。
工作原理:
- 输入:
- 文本模态:商品标题、描述等,经过分词后转成 Token。
- 图像模态:商品图片,通常会被切分成小块(patch),比如一张图片被分成 16x16 的像素块。
- 模型结构:
- 文本信息进入 Transformer 网络,生成文本特征向量。
- 图片信息进入 ViT(Vision Transformer) 或 CNN,生成视觉特征向量。
- 通过 Cross-Attention 机制,将文本和图像的信息融合在一起,最终得到一个统一的商品向量。
- 输出:
一个高维连续向量,比如 768 维的浮点数[0.2, -0.5, 0.8, ...],其中每一维都可以看作是商品的某种特征。
为什么 embedding 是连续的?
因为模型的训练目标就是让相似的商品在向量空间中距离更近(比如余弦相似度更高)。连续的 embedding 能更细腻地表示商品之间的关系。
疑问 4:如何将连续 embedding 转为离散的语义 ID?
起点:既然推荐系统需要离散的 ID,那连续 embedding 是怎么转过去的?
解答:
这一步的核心是量化,即将连续的向量空间“离散化”。以下是一些常见的方法:
1. 局部敏感哈希(LSH)
将 embedding 投影到多个随机超平面上,根据每个超平面的结果(“在上”或“在下”)生成一个离散的哈希码。
2. 乘积量化(PQ)
将高维向量分成多个子向量(比如 768 维 → 8 个 96 维子向量),然后对每个子向量独立量化。
这样可以大大降低存储成本,同时保留向量的相似性。
3. Matryoshka 量化(NEAR2 核心)
将向量分层嵌套量化(比如 512 维 → 256 维 → 128 维 → 64 维),每一层的量化结果都可以作为语义 ID 的一部分。
结语:从连续到离散,推荐系统的平衡之道
通过这次探索,我终于明白了,连续 embedding 和离散语义 ID 是推荐系统中两种不同的技术选择。
- 连续 embedding 更适合表达商品的语义关系,适合深度学习模型的训练。
- 离散语义 ID 则更高效,支撑了推荐系统的实时性和可扩展性需求。
- 两者的结合,正是未来多模态推荐系统发展的方向。
希望这篇文章能帮你也对这个领域有更清晰的了解。一起加油吧!
1217

被折叠的 条评论
为什么被折叠?



