外观
余弦相似度、点积与欧氏距离有什么区别?
3 分钟速学卡
30 秒口述: 我会先看 Embedding 模型的训练目标和向量是否归一化:余弦相似度比较方向,点积同时受方向和模长影响,欧氏距离比较空间中的直线距离。对单位归一化向量,最大化余弦、最大化点积和最小化平方欧氏距离会产生相同排序,因为 ||x-y||²=2-2x·y。如果未归一化,三者可能给出不同结果,所以索引度量必须与模型、归一化和离线评测保持一致。
- 本质: 余弦看方向、点积还看模长、欧氏看距离,三者等价必须以单位归一化为前提。
- 核心机制: 先查模型训练约定,再选索引度量;等价指排序一致,不是数值相同。
- 关键判断: 入库和查询必须使用同一归一化流程;模型或 metric 变更要重放固定评测集。
- 项目落地: 生产配置要固定 embedding_model_version、归一化方式、索引 metric 与 Query 侧处理,并用同一标注集验证 Recall@K。切换模型时不可只复用旧索引参数,应重建候选索引做受控对比。
- 边界与坑: “余弦一定最好。” 度量应匹配模型训练目标和业务数据;“点积和余弦完全一样。” 仅在单位归一化条件下排序等价。
目录
面试官为什么问
这道题考察向量几何、等价条件和工程配置一致性,而不是背三个 API 名称。
小白先看懂
三名徒步者从同一营地出发:余弦关心他们朝向是否一致;点积既看朝向,也会让走得更远的人影响更大;欧氏距离直接量终点之间相隔多远。
| 徒步画面 | 技术含义 |
|---|---|
| 两条路线夹角 | 余弦相似度 |
| 朝向与步长共同作用 | 点积 |
| 两个终点直线距离 | 欧氏距离 |
| 把每条路线缩放成单位长度 | L2 归一化 |
专业上它们是不同的相似性/距离函数。类比只解释几何直觉,不保证向量空间中的“近”一定符合业务语义。
主题教学图片
图:教学图片|余弦相似度、点积与欧氏距离有什么区别?
替代文本: 围绕“余弦相似度、点积与欧氏距离有什么区别?”组织的中文教学图,通过分区、箭头和标签解释核心机制。

读图结论: 未归一化时结果可能不同;度量必须匹配模型与索引。
这张图片用于建立主题机制的直觉。精确公式、参数、失败分支和事实边界仍以正文与 Mermaid 为准。
图片生成记录: model=gpt-image-2,generated=2026-07-15,prompt_version=v1,reviewed=2026-07-16,review_basis=user-confirmed;查看生成 Prompt。
图:技术调用流程|度量选择与等价条件
替代文本: Embedding 先检查训练度量与是否归一化;归一化时三种度量排序等价,未归一化时分别评测并让索引和查询配置一致。
图表加载中…
读图结论: 三种度量只有在明确归一化条件下才可谈排序等价,工程上必须检查模型和索引配置。
图中“单调等价”指排序一致,不代表数值相同。若文档入库归一化而 Query 未归一化,等价条件会被破坏。
核心原理
cos(x,y)=x·y/(||x||||y||);点积为 x·y;欧氏距离为 ||x-y||₂。以 q=(1,0)、a=(10,1)、b=(1,0.2) 为例,模长会让点积偏好 a,而余弦更关注夹角,说明未归一化时排序可能不同。
“余弦定理”是三角形边角关系,“余弦相似度”是向量夹角归一化点积,二者有关但不是同一个术语。
项目和生产视角
生产配置要固定 embedding_model_version、归一化方式、索引 metric 与 Query 侧处理,并用同一标注集验证 Recall@K。切换模型时不可只复用旧索引参数,应重建候选索引做受控对比。
故障演练: 入库向量已归一化,查询服务升级后漏掉归一化,召回排序漂移。临时回滚查询版本,长期加入向量范数分布监控、配置契约测试和固定查询回放;这是演练场景。
常见错误回答
- “余弦一定最好。” 度量应匹配模型训练目标和业务数据。
- “点积和余弦完全一样。” 仅在单位归一化条件下排序等价。
- “距离越大越相似。” 欧氏是距离,通常越小越近;相似度和距离方向不能混用。
递进追问
- 为什么单位向量下欧氏距离与余弦排序等价?
- 向量模长可能编码什么信息?
- ANN 索引的 metric 与 Query metric 不一致会怎样?
- 如何监控归一化流程是否失效?
- 更换 Embedding 模型时怎样做双索引迁移?
关联阅读
总结
一句话记忆: 余弦看方向、点积还看模长、欧氏看距离,三者等价必须以单位归一化为前提。
- 先查模型训练约定,再选索引度量;
- 等价指排序一致,不是数值相同;
- 入库和查询必须使用同一归一化流程;
- 模型或 metric 变更要重放固定评测集。