从零开始学习大模型:重新认识词向量,一组数字如何表示语义?

前面讲线性代数时,我们知道了:
向量就是一组有顺序的数字。
但到了自然语言处理里,问题会变得有点奇怪:
苹果 -> [0.82, 0.76, 0.13, 0.91, ...]香蕉 -> [0.79, 0.81, 0.18, 0.86, ...]书桌 -> [0.12, 0.08, 0.74, 0.20, ...]
一组数字,为什么能表示“苹果”的语义?
更进一步:
为什么“苹果”和“香蕉”的向量更接近,就能说明它们语义更相似?
这篇文章只围绕一件事讲:
「词向量如何把词语放进向量空间,再用距离和方向比较语义相似。」
不展开模型结构,不讲训练算法细节,只把词向量、向量空间、距离、点积、余弦相似度这条线讲清楚。
01 编号只能区分词,不能表达语义
如果只是为了让程序区分不同词,最简单的方法是编号:
苹果 = 1香蕉 = 2书桌 = 3
这个编号当然有用。
它能告诉程序:
1 是苹果2 是香蕉3 是书桌
但它的问题也很明显。
苹果 = 1,香蕉 = 2,不代表香蕉比苹果“大 1”。
苹果 = 1,书桌 = 3,也不代表它们之间存在一个可以用 3 - 1表示的语义距离。
编号只是身份标签。
它不能回答:
- 苹果和香蕉为什么更像?
- 苹果和书桌为什么差得远?
- 两个词到底在哪些方面相似?
所以,词向量不是要给词换一个更复杂的编号,而是要给词一个可以参与计算的语义坐标。

02 词向量:不是编号,而是语义空间里的坐标
词向量的核心变化是:
「不用一个数字表示一个词,而是用一组连续数字表示一个词。」
比如:
苹果 = [0.82, 0.76, 0.13, 0.91, ...]香蕉 = [0.79, 0.81, 0.18, 0.86, ...]书桌 = [0.12, 0.08, 0.74, 0.20, ...]
这组数字可以理解为一个词在语义空间里的位置。
为了方便理解,可以先把每个维度看成某种“隐性语义特征”的参与程度。
例如:
水果属性可食用生鲜场景颜色属性使用场景抽象 / 具象
如果一个词在“水果属性”这个方向上数值很高,在“家具属性”这个方向上数值很低,我们就能大概理解它为什么更接近“苹果、香蕉、橙子”这一类词,而不是“书桌、椅子、键盘”这一类词。
不过这里要注意一个边界:
真实模型里,不一定存在一维严格对应“是否水果”、另一维严格对应“是否家具”。
更常见的情况是:
「多个维度共同表达一个语义关系,一个维度也可能参与多个语义关系。」
所以文章里的“水果属性、可食用、生鲜场景”,主要是帮助理解的示意,不是说模型真的有几列人工命名好的特征表。

03 为什么苹果和香蕉会更接近?
拿“苹果、香蕉、书桌”来看。
苹果和香蕉在很多语义侧面上都接近:
- 都有较强的水果属性
- 都可食用
- 都常出现在生鲜、食品、超市这类场景
- 都属于具体物体
但它们也不是完全一样。
苹果和香蕉在外形、颜色、口感上有差异,所以向量不会完全重合。
再看苹果和书桌。
它们在很多高权重语义维度上差异很大:
- 一个偏水果,一个偏家具
- 一个可食用,一个不可食用
- 一个常在生鲜场景,一个常在办公或家居场景
于是,在向量空间里,苹果和香蕉的位置可能更接近,苹果和书桌的位置可能更远。
这就是词向量能表示语义的关键:
「语义相近的词,往往在多组隐性特征上的数值更接近。」

04 向量空间:把“像不像”变成“位置是否接近”
真实词向量可能有几百维、几千维。
高维空间很难画出来,所以我们常用二维图做简化理解。
在二维图里,每个词是一个点:
苹果:一个点香蕉:一个点书桌:另一个点
如果两个点靠得近,可以理解为它们在某些语义维度上更接近。
如果两个点隔得远,可以理解为它们在很多语义维度上差异更大。
这一步很重要。
词向量不是直接让机器“读懂”文字,而是换了一种表达方式:
词语语义 -> 空间位置语义相似 -> 位置接近语义差异 -> 位置拉远
于是,“两个词像不像”就可以变成一个数学问题:
两个向量之间有多近?两个向量的方向有多接近?

05 距离:离得近,通常更相似
比较词向量时,最容易理解的方法是看距离。
比如:
distance(苹果, 香蕉) 很小distance(苹果, 书桌) 很大
那么我们就可以认为:
苹果 和 香蕉 更相似苹果 和 书桌 更不相似
这和现实中的“空间距离”很像。
两个城市离得近,交通往来通常更方便;两个点在向量空间里离得近,语义关系通常更紧。
不过要说清楚:
距离小,不代表两个词一定同义。
“苹果”和“香蕉”距离可能很近,但它们不是同一个词。
它们更像是在告诉我们:
「这两个词在一批语义特征上的整体表现更接近。」

06 欧氏距离:像用尺子量两个向量
欧氏距离就是最常见的“直线距离”。
如果两个向量是:
A = [a1, a2, a3]B = [b1, b2, b3]
它们的欧氏距离可以写成:
distance(A, B) = sqrt((a1-b1)^2 + (a2-b2)^2 + (a3-b3)^2)
维度更多时,公式只是继续往后加。
它的含义很直接:
每一维都看一眼,看看两个词在这个维度上差多少;所有差异合起来,就得到整体距离。
如果苹果和香蕉在很多维度上数值接近,欧氏距离就会小。
如果苹果和书桌在很多维度上差异明显,欧氏距离就会大。
欧氏距离的优点是好理解。
它的问题是:
如果向量整体尺度不一样,距离可能会被放大。
所以在文本语义相似度里,另一个指标经常出现:余弦相似度。
07 点积:看方向,也会看长度
讲余弦相似度之前,先看点积。
点积的计算方式是:
A · B = a1*b1 + a2*b2 + a3*b3 + ...
从几何上看,它还可以写成:
A · B = |A| * |B| * cosθ
这里的 θ是两个向量之间的夹角。
这说明点积同时受到两个因素影响:
- 方向是否接近
- 向量长度有多大
如果两个词向量方向很接近,夹角小,点积通常会比较大。
但如果某个向量长度特别大,即使方向不是特别接近,点积也可能被长度拉高。
所以点积可以用来比较相似,但要知道它不只看方向。

08 余弦相似度:为什么文本语义里经常用它?
余弦相似度的公式是:
cos(A, B) = A · B / (|A| * |B|)
它做了一件事:
「把向量长度除掉,重点比较两个向量的方向。」
这对文本语义很有用。
因为有时候两个词或短语的向量长度可能不同,但我们更关心它们表达的语义方向是否接近。
比如:
苹果水果香蕉
这些词未必长度一样,但它们在语义空间里的方向可能更接近。
余弦相似度通常这样理解:
- 接近
1:方向很接近,语义相似度较高 - 接近
0:方向关系不明显 - 小于
0:方向差异较大,甚至可能相反
在很多词向量相似度计算里,余弦相似度会比单纯看欧氏距离更常见。

09 用代码算一次词向量相似度
下面用纯 Python 写一个小例子。
它不是训练词向量,只是演示:
给定几组词向量后,如何计算欧氏距离和余弦相似度。
from math import sqrtvectors = { "苹果": [0.90, 0.85, 0.80, 0.10, 0.12], "香蕉": [0.88, 0.82, 0.78, 0.08, 0.10], "书桌": [0.05, 0.03, 0.02, 0.90, 0.85],}def dot(a, b): return sum(x * y for x, y in zip(a, b))def norm(a): return sqrt(sum(x * x for x in a))def euclidean(a, b): return sqrt(sum((x - y) ** 2for x, y in zip(a, b)))def cosine(a, b): return dot(a, b) / (norm(a) * norm(b))pairs = [ ("苹果", "香蕉"), ("苹果", "书桌"),]for left, right in pairs: a = vectors[left] b = vectors[right] print(f"{left} vs {right}") print(" euclidean:", round(euclidean(a, b), 4)) print(" cosine:", round(cosine(a, b), 4))
你会看到,苹果和香蕉的欧氏距离更小,余弦相似度更高。
这不是因为它们的编号接近,而是因为我们给它们设定的多个语义维度更接近。

10 常见误区:词向量相似度不是万能答案
词向量很有用,但有几个坑要避开。
「误区一:每个维度都能人工解释。」
可以把维度类比成隐性语义特征,但真实向量里,很难保证某一维就严格代表“水果属性”。
很多语义关系是多维共同表达出来的。
「误区二:距离近就一定同义。」
距离近只说明整体表示接近,不代表两个词完全等价。
“苹果”和“香蕉”可以很接近,但它们不是同一个东西。
「误区三:相似度就是绝对真理。」
相似度取决于词向量怎么得到、数据来自哪里、维度怎么分布、使用什么指标。
同一组词,在不同词向量里,距离和方向可能不同。
「误区四:只看一个指标就够了。」
欧氏距离、点积、余弦相似度关注点不同。
如果你关心空间位置差异,欧氏距离很自然。
如果你关心方向接近,余弦相似度更常用。
11 一张图总结
词向量可以用一句话概括:
「它把词语从“离散符号”变成“语义空间里的坐标”。」
- 词向量不是编号,而是一组连续数字
- 语义相近的词,往往在多组隐性语义维度上更接近
- 距离和方向,可以用来计算词语之间的相似程度
所以,“苹果”和“香蕉”更像,不是因为它们的编号更近。
而是因为在词向量空间里,它们在很多语义维度上的位置更接近。

学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐




所有评论(0)