什么是 Embedding 向量嵌入?
什么是 Embedding 向量嵌入?
给文字发语义坐标,让机器学会算“意思像不像”
原题:什么是 Embedding(向量嵌入)?为什么把文字变成一串数字之后,就能计算两段话的语义相似度?
向量检索
30 秒回答
- Embedding(向量嵌入)是把文字转成一串固定长度数字(向量)的技术,让机器能“计算”语义
- 核心性质:意思越接近的文本,向量在空间中的位置越近——这是一切语义检索的基础
- 语义相似度最常用余弦相似度来算:看两个向量方向的夹角,值越接近 1 越相似
- 向量由专门训练的嵌入模型生成(如 BGE 系列),不是随便编码
回答与解析
答案要点
Embedding(向量嵌入)是把文字转成一串固定长度数字(向量)的技术,让机器能“计算”语义
核心性质:意思越接近的文本,向量在空间中的位置越近——这是一切语义检索的基础
语义相似度最常用余弦相似度来算:看两个向量方向的夹角,值越接近 1 越相似
向量由专门训练的嵌入模型生成(如 BGE 系列),不是随便编码
它是 RAG 检索、语义搜索、推荐系统共同的地基
核心概念
Embedding(向量嵌入)是指用模型把一段文字映射成一个固定长度的数字向量(比如 1024 个小数),使得语义相近的文字在向量空间中的位置也相近。可以把它想象成给每段话发一个“语义坐标”:谈论同一件事的句子,坐标就挨得近。
比如“我想退货”和“这个商品我不要了”,字面上几乎没有重复的字,关键词搜索会认为它们无关;但嵌入模型理解语义,会把两句话映射到相近位置——这正是语义搜索超越关键词搜索的原因。
语义相似度怎么算
用同一个嵌入模型,分别把两段文本转成向量 A 和 B
计算余弦相似度:cos(A, B) = A·B / (|A| × |B|),本质是看两个向量方向的夹角有多小
结果越接近 1,说明方向越一致、语义越像;接近 0 则基本无关
也可以用点积、欧氏距离等度量,原理相通:把“语义像不像”的模糊问题,变成“数字算一算”的精确问题。注意:两段文本必须用同一个模型编码,不同模型的向量空间互不兼容。
在 RAG 里的角色
| 阶段 | Embedding 做什么 |
|---|---|
| 离线建库 | 把知识库里每个文本块转成向量,存入向量数据库 |
| 在线检索 | 把用户问题也转成向量,找出距离最近的 Top-K 个块 |
没有 Embedding 就没有“按意思找资料”这件事,RAG 检索质量的上限很大程度取决于嵌入模型的好坏。
入门之后,可以往嵌入模型的选型与评测(MTEB / C-MTEB 榜单)、向量数据库与 ANN 近似最近邻索引(如 HNSW)两个方向继续深入。
口语版讲法(约2分钟)
- 一句话定位:Embedding 解决的是从文字到语义可计算的问题
- 核心原理:向量空间里距离近就是意思近,这是语义搜索能跑通的前提
- 业务例子:客服退款场景,关键词搜不到但语义能匹配
- 落地前提:模型要选对、向量库要配好,否则效果会崩
这道题其实是在问,机器怎么理解文字的意思,并且把这种理解变成可以运算的东西。Embedding 说白了就是给每段话发一个坐标,意思越像的,坐标越靠在一起。这么一来,原来模糊的“语义像不像”就变成了精确的“距离远不远”,这是 RAG 和语义搜索能跑通的地基。
具体怎么算相似度呢?最常用的是余弦相似度,看两个向量方向的夹角。夹角越小,值越接近 1,意思就越像。比如“我想退货”和“这个商品我不要了”,字面上几乎没有重复的字,关键词搜索肯定匹配不上,但 Embedding 会把它们映射到相近的位置,因为语义是相同的。这就是为什么语义搜索能超越关键词搜索。
举个例子,客服退款场景。用户说“退款什么时候到账”,如果只靠关键词,可能只匹配到“退款”两个字,把一堆无关的退款政策都翻出来。但用 Embedding 检索,它会优先找到和“到账时间”语义相近的文档片段,比如“退款处理时效是1-3个工作日”。这样生成回答时,模型就有事实依据,而不是凭空编。
不过这里有个前提,Embedding 的质量完全取决于嵌入模型。不同模型向量空间不兼容,必须用同一个模型编码查询和文档。而且向量库的索引方式也很关键,比如用 HNSW 这种 ANN 索引,才能在百万级数据里快速找到最近邻。如果模型选错了,或者索引参数没调好,召回质量会明显下降,RAG 的上限就卡在检索这一步。
所以我会把 Embedding 看成语义检索的基石,但不会认为它万能。真正落地时,我倾向把 Embedding 和关键词检索结合起来做混合检索,这样既能抓到语义,又能保证精确匹配,比如订单号、错误码这些场景。
如果面试官追问,我会说:Embedding 的另一个难点是处理同义词和多义词。比如“苹果”既可以是水果也可以是品牌,单纯靠 Embedding 可能会混淆。这时候就需要结合上下文做消歧,或者用 Rerank 模型做二次筛选。
关键一句:Embedding 对同义词和多义词的处理仍有局限,需要结合上下文消歧或二次排序。
面试官还可能这样问
- 问法 1 · 概念辨析Embedding 向量和给每个词编一个号(比如字典序号)有什么本质区别?为什么编号没法算语义相似度,向量就可以?
- 问法 2 · 场景切入用户在商城搜“不想要了怎么办”,关键词搜索匹配不到“退货政策”这篇文档。用 Embedding 怎么解决这个问题?大概流程是什么样的?