Embedding 中的向量量化 (VQ) 是一种将高维向量压缩为更小的一组代表性原型,从而降低存储和计算成本的技术。它的工作原理是将相似的向量分组到集群中,并将每个原始向量替换为其最近的集群质心的索引。这些质心存储在“码本”中,这是一个预定义的参考向量集。例如,如果您有 100 万个 512 维的 embedding,VQ 可能会将它们映射到 256 个质心(一个 8 位索引),从而大大减少内存使用量,同时保留近似的相似性关系。
该过程通常涉及两个步骤:训练和编码。在训练期间,像 k-means 这样的算法将原始向量聚类以创建码本。每个质心都成为代表其集群的原型。在编码中,每个输入向量都由其最近质心的索引替换。例如,在自然语言处理中,可以对单词 embedding 进行量化,以便像“汽车”和“车辆”这样的同义词映射到同一个质心。在搜索相似项目时,您可以将查询与质心而不是所有向量进行比较,从而加快操作速度。但是,这引入了一个权衡:较小的码本节省更多空间,但会丢失细粒度细节,从而可能降低准确性。
开发人员经常在速度很重要的检索系统或推荐引擎中使用 VQ。一个实际的例子是近似最近邻搜索:不是将查询向量与所有 100 万个 embedding 进行比较,而是预先计算到 256 个质心的距离,并且只在最接近的集群中搜索。像乘积量化这样的扩展通过将向量分成子向量并分别量化每个子向量来提高效率。例如,可以将一个 128D 向量分成四个 32D 子向量,每个子向量量化为 256 个质心,从而产生一个紧凑的 4 字节表示。虽然 VQ 引入了一些误差,但其速度、内存和准确性的平衡使其成为大规模机器学习管道中的主要内容。