向量:如何用数字表示意义
计算机怎么理解"意义"?答案是向量
你有没有想过,计算机是怎么理解"意义"的?
它能理解"苹果"和"水果"的关系吗?能理解"高兴"和"快乐"很像吗?能理解"国王"和"王后"的区别吗?
答案是:它通过向量来理解。每个词都能变成一串数字,这串数字就代表了这个词的"意义"。相似的词,数字也相似;不同的词,数字也差得远。
听起来很神奇对吧?让我给你讲讲这是怎么回事。
1从一串数字说起
向量,说白了就是一串数字。比如 [0.5, -0.3, 0.8, 0.1],这就是一个向量。
但关键不在于它是什么,而在于它能做什么。
"猫"的向量
[0.8, 0.2, 0.9, 0.1, ...]
"狗"的向量
[0.7, 0.3, 0.8, 0.2, ...]
(和"猫"很像,因为都是宠物)
"汽车"的向量
[-0.3, 0.6, -0.1, 0.8, ...]
(和"猫"差很远,因为完全不同)
看出来了吗?"猫"和"狗"的向量很像(都是正数,数值接近),而"汽车"的向量就差远了。
💡 核心思想
向量的每个维度都代表了某种"语义特征"。比如第一个维度可能代表"是不是动物",第二个维度代表"大小",第三个维度代表"是否家养"……通过这些特征的组合,向量就能表达出一个词的"意义"。
2意义的几何学
向量最神奇的地方在于:它能用数学运算来表达语义关系。
King(国王)
[0.9, 0.8, 0.3, ...]
Man(男人)
[0.5, 0.6, 0.2, ...]
Woman(女人)
[0.5, 0.9, 0.7, ...]
Queen(王后)
[0.9, 1.1, 0.8, ...]
向量运算的结果 ≈ "Queen"的真实向量!
这说明向量确实捕获了语义关系
你看,"King - Man"相当于把"国王"的"男性特征"减掉,再加上"Woman"的"女性特征",结果就得到了"Queen"!这不是巧合,而是向量真的学会了这些语义关系。
🎯 更多类比例子
- • Paris - France + Italy = Rome
- (首都关系)
- • Walking - Walk + Swim = Swimming
- (时态关系)
- • Bigger - Big + Small = Smaller
- (比较级关系)
🔍 这意味着什么?
- • 向量空间有几何结构
- • 方向代表语义关系
- • 距离代表相似程度
- • 向量运算能做语义推理
3从文本中学习
你可能会问:这些向量是怎么来的?谁规定了"猫"的向量是 [0.8, 0.2, 0.9, ...]?
答案是:从大量的文本中学习来的。模型会观察每个词出现在什么上下文中,然后调整它的向量,让经常一起出现的词的向量相似。
"一个词的意义由它的上下文决定"
—— 分布式假设(Distributional Hypothesis)
1. 给每个词随机初始化一个向量
2. 扫描海量文本,观察每个词的上下文
3. 调整向量,让上下文相似的词,向量也相似
4. 重复数百万次,直到收敛
"小猫在院子里玩耍"
"小狗在院子里奔跑"
"猫"和"狗"经常出现在相似的上下文中 → 向量接近
📌 常见模型
- • Word2Vec(2013):用简单的神经网络学习词向量
- • GloVe(2014):基于全局词共现矩阵
- • BERT Embedding(2018):上下文相关的向量(同一个词在不同句子中向量不同)
- • OpenAI Embedding:用于文本检索的高质量向量
4怎么衡量两个向量有多像?
有了向量,我们就要比较它们的相似程度。最常用的方法是余弦相似度(Cosine Similarity)。
核心思想
比较两个向量的"方向"是否一致,而不是看它们的长度。
公式
cos(θ) = (A · B) / (|A| × |B|)
A·B 是点积,|A| 和 |B| 是向量长度
同方向
cos ≈ 1
非常相似
垂直
cos = 0
无关
反方向
cos ≈ -1
相反
🎯 实际例子
• "猫" vs "狗":cos ≈ 0.85(很像)
• "猫" vs "汽车":cos ≈ 0.12(不太像)
• "高兴" vs "快乐":cos ≈ 0.92(几乎一样)
• "热" vs "冷":cos ≈ -0.3(相反)
5向量能做什么?
🔍 语义搜索
用户搜索"智能手机",系统也能找到包含"iPhone"、"安卓手机"的文档,因为它们的向量相似。
💡 推荐系统
用户喜欢"科幻电影",系统推荐"星际穿越"、"沙丘"——因为向量接近。
📝 文本分类
把文档变成向量,然后看它和哪个类别的向量最接近,就归到那个类别。
🤖 问答系统
把问题变成向量,在知识库中找向量最相似的答案——这就是RAG的基础。
6别掉进这些坑
❌ 误区1:向量维度越高越好
其实不是。维度太高会导致"维度灾难"——计算慢、存储大、还可能过拟合。通常几百到几千维就够了。
✓ 实际:OpenAI embedding 用 1536 维,够用了
❌ 误区2:向量只能表示词
不是的。向量可以表示任何东西:句子、段落、文档、图片、音频、视频……只要你能把它变成一串数字。
✓ 实际:CLIP 模型把图片和文字都变成向量
❌ 误区3:向量完全等价于"意义"
向量只是"意义"的近似表示。它可能会捕获一些偏见(比如"医生"更接近"男性"),也可能对多义词处理不好("苹果"是水果还是公司?)。
✓ 实际:需要上下文相关的向量(如 BERT)来处理多义词
→核心总结
🎓 一句话总结
- ①定义:向量是一串数字,代表了词(或句子、文档)的"意义"
- ②原理:相似的词向量相似,不同的词向量差远;向量运算能做语义推理
- ③训练:从海量文本中学习,让上下文相似的词向量接近
- ④应用:语义搜索、推荐系统、文本分类、问答系统——向量化是现代AI的基础
→下一篇预告
向量很好,但存在哪里?
当我们有成千上万个向量时,怎么快速找到和某个向量最相似的几个?这就需要向量数据库——专门为存储和检索向量设计的数据库。
下一篇,我们就讲讲这个AI的"记忆库"。
✏️ 手绘图解 · AI Catch 出品
第 49 篇 / 共 84 篇 · 第六阶段:检索与知识增强