向量嵌入的视觉探索
Hacker News 摘要原标题:A visual exploration of vector embeddings
在Pamela Fox的博客中,发布了一篇关于向量嵌入(vector embeddings)的视觉介绍。该内容基于她为2025年Pycon创作的海报,并且提供了可以下载的全尺寸海报。
向量嵌入是一种将输入(如单词、单词列表或图像)映射为浮点数列表的技术,这个数字列表在模型的多维嵌入空间中表示该输入。列表的长度被称为其维度,比如一个具有1024个数字的列表就有1024维。
不同的嵌入模型会有不同的维度长度、允许的输入类型、相似性空间及其他特性。最著名的模型之一是word2vec,它接受单词作为输入,能在任何机器上轻松训练,通常输出300维的向量,能够很好地表示单词的语义。例如,word2vec模型训练后输出“queen”的300维向量。
OpenAI在2022年发布了强大且快速的文本嵌入模型text-embedding-ada-002,能接受最多8192个“tokens”(通常对应于一个单词或音节),并输出1536维的向量。值得注意的是,这个模型在生成的每一个向量中都在第196维出现了奇怪的向下尖峰。
随后,在2024年,OpenAI发布了两个新模型,包括text-embedding-3-small和text-embedding-3-large。这些模型比之前的更快、更便宜,并且text-embedding-3-small同样接受8192个tokens,默认输出1536维的向量。与其前一版本相比,这个模型没有出现向下的尖峰,所有值在正负间均匀分布。
向量嵌入的主要目的在于通过将不同输入的嵌入进行比较,使用距离度量来确定输入之间的相似性。选择适当的模型时,需要确保其相似性排名与人类的认知相匹配。例如,通过使用余弦相似度来比较“dog”与1000个常见英语单词在不同模型中的嵌入结果,可以看到不同模型对词之间关系的不同理解。
为了度量两个向量的“相似性”,可以使用多种度量方式,其中余弦相似度是最常见的方法。该方法通过计算两个向量角度的余弦值来衡量相似性。另一个可供选择的度量方法是点积,它将对应向量元素的乘积相加。现代嵌入模型通常输出单位向量,使得针对同一组单位向量,余弦相似度和点积会产生相同值。
向量数据库还支持距离度量,其中较小的值表示较高的相似性。向量检索是通过计算两个向量之间的相似性,可以在任意输入向量与数据库中已存在的向量间找到语义上相似的内容。随着向量数据库的规模扩大,通常需要使用近似最近邻(ANN)算法进行搜索。
对于存储和计算效率,向量压缩技术如量化和维度减少被用来减少向量大小。标量量化将浮点数转为8位带符号整型,二进制量化则将浮点数转换为0或1的位,从而显著降低存储需求。
Pamela在文末提供了更多资源,包括Jupyter notebooks以及她在Python + AI系列中的相关演讲,以便读者深入了解向量嵌入的内容。
原文:http://blog.pamelafox.org/2025/05/a-visual-exploration-of-vector.html