前面讲线性代数时,我们知道了:

向量就是一组有顺序的数字。

但到了自然语言处理里,问题会变得有点奇怪:

苹果  -> [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%免费

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐