AINotes 101
菜单
Learn / 03 构建 AI / Embeddings

Embeddings

向量嵌入

把文本映射成向量,让「语义相似」变成可以计算的「距离相近」。

BUILD #core#retrieval

一句话定义

Embedding 是把一段文本(也可以是图片、音频)映射成一个固定长度的浮点数向量。训练目标是:语义相近的内容,向量距离更近。

于是原本无法计算的「这两句话意思差不多吗」,变成了可计算的余弦相似度。

为什么重要

它是把语义变成可索引、可搜索、可排序的数据结构的关键一步。

没有它,检索只能靠关键词匹配——用户搜「怎么让模型少胡说」,就找不到标题为「降低幻觉的方法」的文档。有了它,语义层面的召回成为可能。

这使得 RAG 成立,也支撑了聚类、去重、推荐、分类等一整套下游应用。

关键概念

  • 维度:常见 768 到 3072 维。维度越高表达能力越强,存储与计算成本也越高。
  • 相似度:最常用余弦相似度;有些模型训练时用点积,两者需配套使用。
  • 向量数据库:专门做近邻检索(ANN)的系统。数据量小时用内存或普通数据库的向量扩展即可。
  • 分块(chunking):检索的单位不是文档而是片段。块太大噪声多,太小则语义不完整。通常 200–800 token 起步,并保留一定重叠。

实际工程中最容易踩的坑

  1. 用不同的模型编码查询和文档。必须用同一个 embedding 模型,否则向量空间不对齐。
  2. 换了 embedding 模型却没重建索引。旧向量与新查询不在同一空间,检索会静默失效。
  3. 块切断了语义。按固定字符数切分会把表格、列表、代码切断。
  4. 只看相似度,不看相关性。相似不等于有用,还需要重排序(rerank)环节。

它是检索还是理解

一个常见的困惑是:embedding 到底「理解」了内容吗?

它捕捉的是分布上的语义邻近性。它能理解「猫」和「猫咪」很近,但不能理解「这个方案在预算内不可行」。后者需要真正的推理,属于语言模型的工作。

所以标准架构是:embedding 负责召回,语言模型负责判断。

常见误解

  • 「向量搜索可以替代关键词搜索」:不行。专有名词、编号、代码符号仍需关键词精确匹配,混合检索通常最好。
  • 「embedding 模型越新越好」:要结合语言(中文效果差异明显)、维度成本和是否需要多语言统一空间来判断。
  • 「向量数据库是必须的」:几千条数据用内存里算余弦相似度就足够了。

延伸阅读

  • RAG:embedding 最主要的应用
  • Transformer:embedding 的来源

继续阅读

与 Embeddings 同属一个层级,或在本条目中被显式引用。