跳转至

P2-3.2 向量空间(vector space)与位置的直觉

Section ID: P2-3.2 Version: v2026.07.20

在 P2-3.1 里,我们从数据形状(shape)的角度看了标量(scalar)、向量(vector)、矩阵(matrix)。现在再把向量从“值的列表”向前推进一步。在 AI 文档里,向量经常会被解释成 某个空间里的位置

  1. 向量是一个值的列表。
  2. 这个列表也可以被读成像坐标那样的表达。
  3. 所以它也可以被看成一个能够比较远近的位置。

这里的重点,是理解为什么在 embedding、feature、similarity、search 的说明里,向量会反复以 位置距离 的语言出现。

这里重新整理 vector spacedimensionpositiondistancesimilarity。如果说 3.1 把向量读成值的列表,那么这里要整理的是:这些向量怎样在同一个空间里被比较。

顺着 P2-3.1 的流程往下看,会变成下面这样。

  1. 标量表示一个值。
  2. 向量用多个值表示一个对象。
  3. 矩阵收集多个对象的向量。
  4. 向量空间让这些向量能在同一套标准下被摆放并比较。

所以 P2-3.2 的核心,不是停在 我们做出了一个向量,而是继续思考 这些向量放在什么地方、它们彼此有多近

这里比起完整严格的数学定义,更关注怎样在 AI 文档里把向量读成位置。只要先抓住位置、维度、远近的直觉,之后再看到 embedding 检索或 RAG 时,就能把 为什么要找附近的向量 重新读成计算语言。

先抓住一个共同的比较场景

在 Chapter 3 里,我们会反复使用下面三个小向量。

\[ \mathbf{a} = [2,\ 3] \]
\[ \mathbf{b} = [2.2,\ 3.1] \]
\[ \mathbf{c} = [8,\ 1] \]

这三个向量会构成一个延续到后续小节的共同场景。

  • ab 是彼此接近的位置候选。
  • ac 是相隔更远的位置候选。
  • P2-3.4 里,这个例子会再次被拿出来比较 distance、similarity、dot product。
  • P2-3.6 里,同样的向量也会被写成代码数组,用来检查 shape 和计算。

这里的关键转变,是让向量不再只停留在 数字列表,而是能被读成 同一空间里可比较的位置

像下面这样的坐标图一摆出来,就能马上看到为什么 ab 会先被读成更接近的候选,而 c 会被读成更远的位置。在这一节里,先抓住这种程度的位置直觉就够了。

向量空间中 a 和 b 更接近而 c 更远的坐标图

这一节现在先抓住什么 紧接着会连到的问题 后面再次出现的位置
为什么向量会被读成位置 在 P2-3.3 里会看矩阵乘法怎样制造新的表示。 它会成为重新阅读 Part 1 里 embedding、similarity search、RAG 的基础。
只有在同一空间里才能比较的直觉 在 P2-3.6 里会用代码检查 shape 和计算规则。 在 Part 3 里读 feature space、clustering、基于距离的直觉时会再次出现。
“接近”是“相似”的候选解释 它会在后续小节里通过 NumPy 和数据例子继续展开。 在 Part 6 P6-11.1 向量数据库和 P6-11.2 索引与检索质量说明里会再次出现。

核心判断标准:向量空间(vector space)与位置的直觉

  • 能把向量解释成“值的列表”与“像坐标一样可读的表达”。
  • 能把向量空间解释成一个可以摆放并比较向量的可计算空间。
  • 能把维度理解成向量里值的个数,或坐标轴的个数。
  • 能解释“彼此接近的向量可能代表相似的数据或意义”这一基本直觉。
  • 能理解 embedding 是把文本或条目变成向量空间位置的一种表示方式。
  • 能说明为什么这种直觉会在 similarity search、RAG、recommendation、classification 里再次出现。
  • 能轻量解释向量加法和标量乘法是向量空间的基本运算。

三个基准

基准 为什么重要 本节所需的理解水平
把向量读成位置 因为 embedding 和表示学习的说明经常使用坐标、位置、空间这套语言。 理解每个分量都可以像坐标那样起作用,因此向量能像一个点那样比较。
接近是相似的候选 因为它解释了为什么 similarity search 和 recommendation 会去找附近的向量。 理解靠近的向量可能拥有相似特征或相似意义。
只能在同一空间里比较 因为一旦维度和 shape 不同,就无法直接计算距离或相似度。 理解只有长度相同、规则相同的向量才能彼此比较。

把向量读成位置

在 P2-3.1 里,我们把向量当成有顺序的值列表。

\[ \mathbf{x} = [2,\ 3] \]

这个向量是一个含有两个值的列表。同时,它也可以被读成二维平面上某个点的坐标。此时,第一个值可以读成横向位置,第二个值可以读成纵向位置。

所以,\([2,\ 3]\) 可以被读成 向右移动 2、向上移动 3 后到达的位置。这个解释并没有完整说尽所有向量在数学上的意义,但在 AI 入门里,它提供了把向量读成位置的基础直觉。

我们把共同场景里的向量再摆一次。

\[ \mathbf{a} = [2,\ 3] \]
\[ \mathbf{b} = [2.2,\ 3.1] \]
\[ \mathbf{c} = [8,\ 1] \]

\(\mathbf{a}\)\(\mathbf{b}\) 的数字比较相近。因此,如果把它们放进同一个空间,我们会预期它们彼此靠得更近。相反,\(\mathbf{c}\)\(\mathbf{a}\) 的数字结构差异更大,所以它们可能会相隔更远。

这就是把向量读成位置的第一层直觉。

如果向量中的数字相近,它们在空间里可能也比较接近,而这种接近可以被解释成数据特征或意义相近的可能性。

这里重要的还不是完整证明 为什么 它们接近,而是先意识到 比较的问题出现了。这个问题会在后面的章节里继续连到距离与相似度的计算。

当然,这并不意味着 数字接近,意义就一定接近。这还取决于这些值是怎样被做成有意义的表示、它们是如何被学习出来的、以及使用了什么距离或相似度标准。

向量空间是摆放向量并进行计算的地方

严格地说,向量空间是满足若干条件的数学结构。这里把它读成:一个在同一规则下摆放向量、比较向量、并允许做加法与缩放计算的地方,就已经足够。

例如,下面这些向量都包含两个值。

\[ [1,\ 2],\quad [3,\ 4],\quad [0,\ -1] \]

它们可以被放进同一个二维空间。相反,如果是一个包含三个值的向量,就可以看成三维空间里的表达。

\[ [1,\ 2,\ 3] \]

关键点在于:比较必须发生在同一个空间里。一个有两个值的向量和一个有三个值的向量,很难立刻用同样方式直接比较。

[1, 2] 与 [1, 2, 3] 长度不同,因此不能直接套用同一种位置比较或距离计算。

这也会连到代码里的 shape 问题。向量空间的直觉,最后会落到这样一种感觉上:比较只能发生在同样规则和同样形状之内

向量空间的最小数学规则

如果要严格定义 vector space,就需要处理多条公理。这里不去完整证明。初学者先要知道的运算只有两个。

  • 向量之间可以相加。
  • 一个数字可以乘到向量上。

第一个叫向量加法(vector addition)。

\[ [1,\ 2] + [3,\ 4] = [4,\ 6] \]

第二个叫标量乘法(scalar multiplication)。这里的 scalar 就是一个数字。

\[ 2[1,\ 2] = [2,\ 4] \]

这两个运算重要,是因为它们能制造新向量。比如,可以把两个向量加在一起,或者把一个向量放大、缩小。

\[ 0.5[2,\ 4] = [1,\ 2] \]

这种“先把向量乘上数字,再加起来”的方式,叫作线性组合(linear combination)。

\[ 2\mathbf{a} + 3\mathbf{b} \]

这个式子表示:把向量 \(\mathbf{a}\) 乘 2,把向量 \(\mathbf{b}\) 乘 3,再把结果加起来。现在不需要把公式背得很深。重要的是要看到:向量空间不只是 向量摆在那里,它也是一个能做加法、缩放、生成新表示的计算结构。

这个视角在后面的 AI 语境里会变得重要。

例如,输入向量乘上权重、多个值相加变成新表示、向量表示被一点点调整,这些计算都建立在这样的视角之上。

不过这里仍然不详细计算线性组合和矩阵乘法。只要先记住:向量空间是 允许做加法和标量乘法的表示空间

回到共同场景,不只是 ab 能拿来比较,我们也可以形成 a + b 这样的新表示,或者像 2a 那样改变大小。也就是说,向量空间既是比较的地方,也是构造新向量的计算场所。

先把维度读成轴的数量或值的个数

这里先把维度(dimension)读成向量里值的个数。

\[ [2,\ 3] \]

这个向量有两个值,所以可以读成二维向量。

\[ [0.1,\ 0.7,\ -0.2,\ 1.5] \]

这个向量有四个值,所以可以读成四维向量。

在现实里,二维和三维比较容易画出来想象。但在 AI 里,几百维、几千维的向量也经常出现。例如,文本 embedding 可以把一句话或一个词表示成由大量数字组成的向量。

一句话经过 embedding 模型之后,可能会变成一个包含几百个或几千个数字的向量。

人很难直接把这么多维度画出来。但基础直觉仍然成立:每个维度都能像一个坐标那样使用,整个向量可以像一个位置那样被比较,而远近关系可以成为读取数据关系的线索。

不过,也不能断言每个维度都一定有一个人能立刻解释的意义。在训练得到的 embedding 里,每个数字不一定都有人工贴上的明确标签。

接近会成为相似的候选

在向量空间里,位置接近的向量可能对应相似的数据。这就是 embedding 与向量检索的核心直觉。

举个简单例子,想象一下只有两个特征的商品向量。

这里把第一个值看成价格档位,第二个值看成重量。

\[ \mathbf{p}_1 = [3,\ 2] \]
\[ \mathbf{p}_2 = [3.1,\ 2.2] \]
\[ \mathbf{p}_3 = [9,\ 8] \]

\(\mathbf{p}_1\)\(\mathbf{p}_2\) 的价格档位与重量都比较接近,因此这两个向量很可能彼此靠近。相对地,\(\mathbf{p}_3\) 可能会离它们更远。

这种直觉经常被用在 recommendation、search、classification 里。最后都会连到这样的问题:怎样找到相似用户、相似文档、相似图像、相似商品。

但接近只是候选,不是最终答案。我们仍然需要验证:究竟用什么标准定义“接近”、这些向量是怎样从数据里学出来的、以及在真实问题里这种接近是否真的有用。

这件事之所以重要,是因为到了 P2-3.4,即使是同一组向量,我们也会通过 distancenormdirectioncosine similarity 去问不同的问题。现在的 接近 只是起点问题,后面会继续收窄 到底什么叫接近、以什么方式接近

位置与位相不是同一个词

这里说的位置(position),是把向量像坐标一样放进空间、并用来思考远近的入门表达。相对地,位相(topology)是数学里更宽、更抽象的概念。它不只是谈一个点的坐标,而是涉及哪些点彼此接近、哪些结构彼此连通、以及如何看待 continuity 这样的性质。

在 AI 文档里,也可能会出现 空间的位相数据流形(manifold)表示空间的结构 这类说法。这些表达并不是只盯着某个向量坐标本身,而是更接近于讨论所有数据表示一起形成的整体连接关系和结构。

不过,这里不学习位相数学。现在只要先区分到这个程度就够了:位置是一个向量放在空间中的地方,距离是两个向量相隔多近的值,而位相则是观察空间里结构、接近、连通、连续性的更抽象视角。

所以在 P2-3.2 里,我们先固定位置与接近的直觉,把位相只记成 谈到更深数学结构时可能会出现的表达

这里先抓住位置与接近的直觉,不进入向量空间公理证明,也不展开距离公式和 cosine similarity 的完整计算。shape 与数组计算会在 P2-3.6 再回来,更具体的检索用途会在 Part 6 再回来。

Embedding 是把数据放进向量空间的方法

embedding 是一种把文本、图像、商品、用户等对象转成向量的表示。Part 1 里我们已经看过 embedding 的大图景,这里只是把它重新读成数学表达。

一个对象经过 embedding 模型,会变成向量,而这个结果会被当成向量空间中的一个位置来处理。

例如,假设一句话被表示成下面这个向量。

\[ \mathbf{e} = [0.12,\ -0.03,\ 0.88,\ 0.41] \]

很难说这个向量中的每个数字都对应一个人能直接读懂的词义。但整个向量仍然可以被当成那句话的一种表示(representation)。

一旦这个表示被放进向量空间,就可以和其他句子的向量进行比较。

如果把句子 A、句子 B、句子 C 的向量放在同一个空间里,我们就可以比较哪一句和哪一句更近。

这种直觉会继续连到 similarity search 和 RAG。不过这里不实现检索系统,只先固定一点:embedding 会制造可比较的向量表示

从相关学术资料看这种连接

这一节的说明不只是简单比喻。在表示学习(representation learning)与词向量(word vector)研究里,数据表示与向量空间之间的关系本来就是重要主题。

Bengio、Courville、Vincent 关于表示学习的综述指出,机器学习算法的成功很大程度上依赖于数据表示。它还把表示学习、密度估计(density estimation)、流形学习(manifold learning)之间的几何联系当作重要问题提出。这为 向量表示不仅仅是数字列表,还可能是揭示数据结构的一种表示 提供了支持。

Mikolov、Chen、Corrado、Dean 的 word2vec 论文在大规模文本数据中学习了词的连续向量表示,并通过词相似性任务评估了表示质量。这展示了现代 NLP 的一个重要方向:即使是词这样的符号对象,也可以被转成向量空间里的表示,并比较这些向量之间的接近程度。

这里不解释这两篇资料里的详细模型,只把它们当作依据,说明从标量、向量、矩阵、位置的思路,确实会连到 embedding 与表示学习。

理解向量空间时要区分的层次

当看到“向量空间”这个表达时,可以按下面顺序去读。

  1. 什么被表示成了向量?
  2. 这个向量有多少维?
  3. 被比较的向量是不是都在同一个空间里?
  4. “接近”是按照什么标准算出来的?
  5. 这种接近在真实问题里意味着什么?

例如,搜索文档 embedding 向量 这句话可以拆开读成:先用 embedding 模型把文档转成向量,把这些文档向量存进同一个空间,再把问题也转成向量,找到与问题向量接近的文档向量,把这些接近的文档当成候选。

这个解释会连到 Part 1 里的 RAG 讨论。在 Part 2 里,我们是在恢复它下面那层向量空间直觉。

为什么向量空间会让人觉得难

向量空间之所以会让人觉得难,是因为二维、三维还比较容易画图想象,但高维很难直接想象;同时,每个维度里的数字也并不总能和人手工命名的意义一一对应。

所以这里不要求把高维空间精确画出来。我们只保留这样的直觉:向量是在同一规则下形成的数字表示、同一空间里的向量可以互相比较、接近的向量可以成为相似的候选,但这种相似仍然必须被验证。

这种直觉会直接继续连到 embedding、vector search、recommendation、clustering。

通过案例来看

案例 1. 为什么相似的句子会被解释成彼此接近的位置向量

学习者第一次听到 句子在向量空间里很接近 时,常常会困惑:一句话怎么会变成位置?人类是按词语和意义来读句子的,而 embedding 模型会把一句话变成多个数字,并把它表示成同一空间里的一个位置。

例如,配送太慢了什么时候能到? 即使词语并不完全相同,也可能描述的是相似场景。如果这类句子在 embedding 空间里被放成彼此接近的向量,系统就能更容易找到意义相近的候选句子。

这个案例说明了,为什么我们要把向量看成不只是数字列表。即使人不能直接解释每个坐标的独立意义,整个向量的位置关系仍然可以成为判断相似与不同的线索。

所以,向量空间的直觉重点不在于 数字很多,而在于 这些表示可以在同一空间里比较。只要抓住这一点,embedding、similarity search、recommendation、RAG 的说明就都能在同一张地图上阅读。

检查清单

  • 能把向量解释成“值的列表”与“像坐标一样可读的表达”吗?
  • 能把向量空间解释成摆放和比较向量的可计算空间吗?
  • 能把维度(dimension)解释成向量里值的个数或坐标轴数量吗?
  • 能说明靠近的向量会成为相似候选,但不自动等于答案吗?
  • 能区分位置(position)、距离(distance)、位相(topology),而不把它们混成同一个词吗?
  • 能说明 embedding 是把对象转成向量空间内部表示的一种方式吗?
  • 能说明为什么向量空间直觉会在 similarity search、RAG、recommendation、clustering 中再次出现吗?
  • 能轻量解释 vector addition、scalar multiplication、linear combination 是向量空间的基本计算吗?
  • 能说明 embedding 和 similarity search 为什么要求在同一空间、同一维度里比较吗?

来源与参考资料