向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别? 整理

11377 words
57 minutes
向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别? 整理

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?#

问题#

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?

标准回答#

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。文本向量检索基本都用它,因为我们关心的是语义方向,一篇 100 字的文章和一篇 1000 字的文章只要讲的是同一个主题,余弦相似度就会很高。取值范围 -1 到 1,1 是完全同向,-1 是完全反向。欧几里得距离算的是空间中两点之间的直线距离,就是勾股定理那一套。图像检索、人脸识别这类场景用得多,因为像素特征向量本身就有”绝对位置”的含义,两张图的特征向量在空间里离得越近,长得就越像。取值 ≥ 0,越小越相似。曼哈顿距离把各维度的差值绝对值加起来,像在城市街区里沿着街道走,不能斜着穿。网格数据、稀疏特征向量用得比较多,比如地图坐标计算、高维稀疏文本特征。取值 ≥ 0,同样越小越相似。三种方法的选型逻辑:文本、推荐系统首选余弦相似度;图像、视频检索首选欧氏距离;网格坐标、稀疏高维数据考虑曼哈顿距离。

扩展知识#

数学公式与计算复杂度假设有两个 n 维向量 A 和 B:1)余弦相似度的公式是两个向量的点积除以模长的乘积,计算量主要是 n 次乘法加 n 次加法,再算两个模长。Faiss、Milvus 这类向量数据库内部会对归一化后的向量做优化,归一化之后余弦相似度就等价于点积,省掉模长计算。

2) 欧氏距离是各维度差值平方和再开根号。实际检索时经常省掉开根号这一步,直接比较平方和就够了,能省不少计算。

3) 曼哈顿距离是各维度差值绝对值之和,计算最简单,没有乘法和开方,在高维稀疏场景下效率有优势。三种距离的计算过程对比:余弦相似度:先算点积 A·B,再算 |A| 和 |B|,最后做除法

欧氏距离:逐维度算差值、平方、累加,最后开根号

曼哈顿距离:逐维度算差值、取绝对值、累加不同场景的选型考量文本语义检索基本锁定余弦相似度,原因很直接:Embedding 模型输出的向量长度本身没有业务含义,一个句子长一点短一点不影响语义,我们只关心向量指向哪个方向。OpenAI 的 text-embedding-ada-002、BGE、M3E 这些模型出来的向量都建议用余弦相似度。图像检索更适合欧氏距离,ResNet、CLIP 这类视觉模型提取的特征向量,其数值大小本身携带了像素强度、纹理密度这些信息。人脸识别领域的 ArcFace、CosFace 虽然名字里带 Cos,但训练时用的是角度 margin,推理时用欧氏距离效果更稳定。曼哈顿距离在推荐系统的用户行为特征上有奇效,用户点击、购买这类行为天然是 0/1 稀疏向量,曼哈顿距离对这种数据不敏感于个别维度的极端值,鲁棒性比欧氏距离好。向量数据库的索引加速不管用哪种距离度量,暴力遍历 1 亿条向量肯定扛不住,所以向量数据库都会建索引。主流的索引算法:1)IVF 系列:先把向量空间切成 1000-10000 个聚类中心,查询时只在最近的几个聚类里找,Milvus、Faiss 都支持。

2) HNSW:构建多层图结构,高层稀疏跳跃、低层密集精确,Pinecone、Qdrant 默认都用这个。

3) PQ 量化:把 128 维向量切成 8 个子空间,每个子空间量化成 256 个码本,空间压缩 32 倍,精度损失可控。这些索引算法和距离度量是正交的,IVF 搭余弦、HNSW 搭欧氏都行,只要在建索引和查询时保持一致就没问题。实际踩坑经验1)向量没归一化就用余弦相似度,结果会很诡异。有些 Embedding 模型输出的向量本身不是单位向量,得自己先 L2 归一化再存进向量库。

2) 欧氏距离对数值尺度敏感,如果某几个维度的数值特别大,会把距离带偏。工业界常见做法是先做 z-score 标准化,让各维度方差一致。

3) 高维空间有”维度灾难”,当维度超过几百维,所有向量之间的距离都趋于相等,区分度变差。这时候降维或者换用近似算法比纠结用哪种距离更重要。

维基百科余弦相似度维基百科欧几里得距离维基百科曼哈顿距离

面试官追问#

  • 提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?回答:归一化之后所有向量的模长都是 1,欧氏距离的平方展开是 |A|² + |B|² - 2A·B = 2 - 2A·B,而余弦相似度就是 A·B。两者是单调递减关系,排序结果完全一致。所以很多向量库内部会强制归一化,统一用点积来算,还能利用 SIMD 指令加速。- 提问:为什么说曼哈顿距离对高维稀疏数据更友好?
  • 回答:稀疏向量里大部分维度都是 0,有值的维度可能差异很大。欧氏距离会把大差异平方放大,一个维度差 10 就贡献 100;曼哈顿距离只是线性累加,差 10 就贡献 10。这样少数几个极端维度不会主导整体距离,对稀疏数据更稳定。- 提问:实际业务中怎么选向量搜索的距离度量?
  • 回答:先看 Embedding 模型官方推荐,大多数文本模型都建议余弦相似度。如果是自己训练的模型,就看训练时 loss 函数用的什么度量,推理时保持一致。实在拿不准就跑个 A/B 测试,用业务指标说话,别凭感觉猜。

数学公式与计算复杂度不同场景的选型考量向量数据库的索引加速实际踩坑经验

提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?提问:为什么说曼哈顿距离对高维稀疏数据更友好?提问:实际业务中怎么选向量搜索的距离度量?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号

答案#

Copilot 模式和 Agent 模式的区别是什么?上次浏览:2026-03-16 14:49:50什么是向量数据库?在基于大模型的应用开发中,向量数据库主要解决什么问题?你都了解哪些向量数据库?如何选型?上次浏览:2026-03-16 14:50:03向量数据库原理是什么? 请简述下它的原理上次浏览:2026-03-16 14:50:13向量数据库中的 HNSW、LSH、PQ 分别是什么意思?向量数据库中的 ANN 是什么?为什么需要用它?向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?向量数据库的工作流程有哪些?请简述下什么是 MCP 协议,它在 AI 大模型系统中的作用是什么?上次浏览:2026-03-16 14:50:33MCP 架构包含哪些核心组件?上次浏览:2026-03-16 14:51:22MCP 协议支持哪两种模式?上次浏览:2026-03-16 14:51:4211595. 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。文本向量检索基本都用它,因为我们关心的是语义方向,一篇 100 字的文章和一篇 1000 字的文章只要讲的是同一个主题,余弦相似度就会很高。取值范围 -1 到 1,1 是完全同向,-1 是完全反向。欧几里得距离算的是空间中两点之间的直线距离,就是勾股定理那一套。图像检索、人脸识别这类场景用得多,因为像素特征向量本身就有”绝对位置”的含义,两张图的特征向量在空间里离得越近,长得就越像。取值 ≥ 0,越小越相似。曼哈顿距离把各维度的差值绝对值加起来,像在城市街区里沿着街道走,不能斜着穿。网格数据、稀疏特征向量用得比较多,比如地图坐标计算、高维稀疏文本特征。取值 ≥ 0,同样越小越相似。三种方法的选型逻辑:文本、推荐系统首选余弦相似度;图像、视频检索首选欧氏距离;网格坐标、稀疏高维数据考虑曼哈顿距离。

数学公式与计算复杂度假设有两个 n 维向量 A 和 B:1)余弦相似度的公式是两个向量的点积除以模长的乘积,计算量主要是 n 次乘法加 n 次加法,再算两个模长。Faiss、Milvus 这类向量数据库内部会对归一化后的向量做优化,归一化之后余弦相似度就等价于点积,省掉模长计算。

2) 欧氏距离是各维度差值平方和再开根号。实际检索时经常省掉开根号这一步,直接比较平方和就够了,能省不少计算。

3) 曼哈顿距离是各维度差值绝对值之和,计算最简单,没有乘法和开方,在高维稀疏场景下效率有优势。三种距离的计算过程对比:余弦相似度:先算点积 A·B,再算 |A| 和 |B|,最后做除法

欧氏距离:逐维度算差值、平方、累加,最后开根号

曼哈顿距离:逐维度算差值、取绝对值、累加不同场景的选型考量文本语义检索基本锁定余弦相似度,原因很直接:Embedding 模型输出的向量长度本身没有业务含义,一个句子长一点短一点不影响语义,我们只关心向量指向哪个方向。OpenAI 的 text-embedding-ada-002、BGE、M3E 这些模型出来的向量都建议用余弦相似度。图像检索更适合欧氏距离,ResNet、CLIP 这类视觉模型提取的特征向量,其数值大小本身携带了像素强度、纹理密度这些信息。人脸识别领域的 ArcFace、CosFace 虽然名字里带 Cos,但训练时用的是角度 margin,推理时用欧氏距离效果更稳定。曼哈顿距离在推荐系统的用户行为特征上有奇效,用户点击、购买这类行为天然是 0/1 稀疏向量,曼哈顿距离对这种数据不敏感于个别维度的极端值,鲁棒性比欧氏距离好。向量数据库的索引加速不管用哪种距离度量,暴力遍历 1 亿条向量肯定扛不住,所以向量数据库都会建索引。主流的索引算法:1)IVF 系列:先把向量空间切成 1000-10000 个聚类中心,查询时只在最近的几个聚类里找,Milvus、Faiss 都支持。

2) HNSW:构建多层图结构,高层稀疏跳跃、低层密集精确,Pinecone、Qdrant 默认都用这个。

3) PQ 量化:把 128 维向量切成 8 个子空间,每个子空间量化成 256 个码本,空间压缩 32 倍,精度损失可控。这些索引算法和距离度量是正交的,IVF 搭余弦、HNSW 搭欧氏都行,只要在建索引和查询时保持一致就没问题。实际踩坑经验1)向量没归一化就用余弦相似度,结果会很诡异。有些 Embedding 模型输出的向量本身不是单位向量,得自己先 L2 归一化再存进向量库。

2) 欧氏距离对数值尺度敏感,如果某几个维度的数值特别大,会把距离带偏。工业界常见做法是先做 z-score 标准化,让各维度方差一致。

3) 高维空间有”维度灾难”,当维度超过几百维,所有向量之间的距离都趋于相等,区分度变差。这时候降维或者换用近似算法比纠结用哪种距离更重要。

维基百科余弦相似度维基百科欧几里得距离维基百科曼哈顿距离

  • 提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?回答:归一化之后所有向量的模长都是 1,欧氏距离的平方展开是 |A|² + |B|² - 2A·B = 2 - 2A·B,而余弦相似度就是 A·B。两者是单调递减关系,排序结果完全一致。所以很多向量库内部会强制归一化,统一用点积来算,还能利用 SIMD 指令加速。- 提问:为什么说曼哈顿距离对高维稀疏数据更友好?
  • 回答:稀疏向量里大部分维度都是 0,有值的维度可能差异很大。欧氏距离会把大差异平方放大,一个维度差 10 就贡献 100;曼哈顿距离只是线性累加,差 10 就贡献 10。这样少数几个极端维度不会主导整体距离,对稀疏数据更稳定。- 提问:实际业务中怎么选向量搜索的距离度量?
  • 回答:先看 Embedding 模型官方推荐,大多数文本模型都建议余弦相似度。如果是自己训练的模型,就看训练时 loss 函数用的什么度量,推理时保持一致。实在拿不准就跑个 A/B 测试,用业务指标说话,别凭感觉猜。

数学公式与计算复杂度不同场景的选型考量向量数据库的索引加速实际踩坑经验

提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?提问:为什么说曼哈顿距离对高维稀疏数据更友好?提问:实际业务中怎么选向量搜索的距离度量?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号


来源: 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?.mhtml

关键点#

  • 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?#

  • 有什么区别?
  • 问题#

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?

  • 有什么区别?
  • VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。

备注#

  • 本文已做格式统一与噪声清理,保留原始语义。
  • 问题#

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?

  • 标准回答#

  • 问题#

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。文本向量检索基本都用它,因为我们关心的是语义方向,一篇 100 字的文章和一篇 1000 字的文章只要讲的是同一个主题,余弦相似度就会很高。取值范围 -1 到 1,1 是完全同向,-1 是完全反向。欧几里得距离算的是空间中两点之间的直线距离,就是勾股定理那一套。图像检索、人脸识别这类场景用得多,因为像素特征向量本身就有”绝对位置”的含义,两张图的特征向量在空间里离得越近,长得就越像。取值 ≥ 0,越小越相似。曼哈顿距离把各维度的差值绝对值加起来,像在城市街区里沿着街道走,不能斜着穿。网格数据、稀疏特征向量用得比较多,比如地图坐标计算、高维稀疏文本特征。取值 ≥ 0,同样越小越相似。三种方法的选型逻辑:文本、推荐系统首选余弦相似度;图像、视频检索首选欧氏距离;网格坐标、稀疏高维数据考虑曼哈顿距离。

数学公式与计算复杂度假设有两个 n 维向量 A 和 B:1)余弦相似度的公式是两个向量的点积除以模长的乘积,计算量主要是 n 次乘法加 n 次加法,再算两个模长。Faiss、Milvus 这类向量数据库内部会对归一化后的向量做优化,归一化之后余弦相似度就等价于点积,省掉模长计算。

2) 欧氏距离是各维度差值平方和再开根号。实际检索时经常省掉开根号这一步,直接比较平方和就够了,能省不少计算。

3) 曼哈顿距离是各维度差值绝对值之和,计算最简单,没有乘法和开方,在高维稀疏场景下效率有优势。三种距离的计算过程对比:余弦相似度:先算点积 A·B,再算 |A| 和 |B|,最后做除法

欧氏距离:逐维度算差值、平方、累加,最后开根号

曼哈顿距离:逐维度算差值、取绝对值、累加不同场景的选型考量文本语义检索基本锁定余弦相似度,原因很直接:Embedding 模型输出的向量长度本身没有业务含义,一个句子长一点短一点不影响语义,我们只关心向量指向哪个方向。OpenAI 的 text-embedding-ada-002、BGE、M3E 这些模型出来的向量都建议用余弦相似度。图像检索更适合欧氏距离,ResNet、CLIP 这类视觉模型提取的特征向量,其数值大小本身携带了像素强度、纹理密度这些信息。人脸识别领域的 ArcFace、CosFace 虽然名字里带 Cos,但训练时用的是角度 margin,推理时用欧氏距离效果更稳定。曼哈顿距离在推荐系统的用户行为特征上有奇效,用户点击、购买这类行为天然是 0/1 稀疏向量,曼哈顿距离对这种数据不敏感于个别维度的极端值,鲁棒性比欧氏距离好。向量数据库的索引加速不管用哪种距离度量,暴力遍历 1 亿条向量肯定扛不住,所以向量数据库都会建索引。主流的索引算法:1)IVF 系列:先把向量空间切成 1000-10000 个聚类中心,查询时只在最近的几个聚类里找,Milvus、Faiss 都支持。

2) HNSW:构建多层图结构,高层稀疏跳跃、低层密集精确,Pinecone、Qdrant 默认都用这个。

3) PQ 量化:把 128 维向量切成 8 个子空间,每个子空间量化成 256 个码本,空间压缩 32 倍,精度损失可控。这些索引算法和距离度量是正交的,IVF 搭余弦、HNSW 搭欧氏都行,只要在建索引和查询时保持一致就没问题。实际踩坑经验1)向量没归一化就用余弦相似度,结果会很诡异。有些 Embedding 模型输出的向量本身不是单位向量,得自己先 L2 归一化再存进向量库。

2) 欧氏距离对数值尺度敏感,如果某几个维度的数值特别大,会把距离带偏。工业界常见做法是先做 z-score 标准化,让各维度方差一致。

3) 高维空间有”维度灾难”,当维度超过几百维,所有向量之间的距离都趋于相等,区分度变差。这时候降维或者换用近似算法比纠结用哪种距离更重要。

维基百科余弦相似度维基百科欧几里得距离维基百科曼哈顿距离

  • 提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?回答:归一化之后所有向量的模长都是 1,欧氏距离的平方展开是 |A|² + |B|² - 2A·B = 2 - 2A·B,而余弦相似度就是 A·B。两者是单调递减关系,排序结果完全一致。所以很多向量库内部会强制归一化,统一用点积来算,还能利用 SIMD 指令加速。- 提问:为什么说曼哈顿距离对高维稀疏数据更友好?
  • 回答:稀疏向量里大部分维度都是 0,有值的维度可能差异很大。欧氏距离会把大差异平方放大,一个维度差 10 就贡献 100;曼哈顿距离只是线性累加,差 10 就贡献 10。这样少数几个极端维度不会主导整体距离,对稀疏数据更稳定。- 提问:实际业务中怎么选向量搜索的距离度量?
  • 回答:先看 Embedding 模型官方推荐,大多数文本模型都建议余弦相似度。如果是自己训练的模型,就看训练时 loss 函数用的什么度量,推理时保持一致。实在拿不准就跑个 A/B 测试,用业务指标说话,别凭感觉猜。

数学公式与计算复杂度不同场景的选型考量向量数据库的索引加速实际踩坑经验

提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?提问:为什么说曼哈顿距离对高维稀疏数据更友好?提问:实际业务中怎么选向量搜索的距离度量?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号

Copilot 模式和 Agent 模式的区别是什么?上次浏览:2026-03-16 14:49:50什么是向量数据库?在基于大模型的应用开发中,向量数据库主要解决什么问题?你都了解哪些向量数据库?如何选型?上次浏览:2026-03-16 14:50:03向量数据库原理是什么?

  • 请简述下它的原理上次浏览:2026-03-16 14:50:13向量数据库中的 HNSW、LSH、PQ 分别是什么意思?向量数据库中的 ANN 是什么?为什么需要用它?向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?向量数据库的工作流程有哪些?请简述下什么是 MCP 协议,它在 AI 大模型系统中的作用是什么?上次浏览:2026-03-16 14:50:33MCP 架构包含哪些核心组件?上次浏览:2026-03-16 14:51:22MCP 协议支持哪两种模式?上次浏览:2026-03-16 14:51:4211595. 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。文本向量检索基本都用它,因为我们关心的是语义方向,一篇 100 字的文章和一篇 1000 字的文章只要讲的是同一个主题,余弦相似度就会很高。取值范围 -1 到 1,1 是完全同向,-1 是完全反向。欧几里得距离算的是空间中两点之间的直线距离,就是勾股定理那一套。图像检索、人脸识别这类场景用得多,因为像素特征向量本身就有”绝对位置”的含义,两张图的特征向量在空间里离得越近,长得就越像。取值 ≥ 0,越小越相似。曼哈顿距离把各维度的差值绝对值加起来,像在城市街区里沿着街道走,不能斜着穿。网格数据、稀疏特征向量用得比较多,比如地图坐标计算、高维稀疏文本特征。取值 ≥ 0,同样越小越相似。三种方法的选型逻辑:文本、推荐系统首选余弦相似度;图像、视频检索首选欧氏距离;网格坐标、稀疏高维数据考虑曼哈顿距离。

数学公式与计算复杂度假设有两个 n 维向量 A 和 B:1)余弦相似度的公式是两个向量的点积除以模长的乘积,计算量主要是 n 次乘法加 n 次加法,再算两个模长。Faiss、Milvus 这类向量数据库内部会对归一化后的向量做优化,归一化之后余弦相似度就等价于点积,省掉模长计算。

2) 欧氏距离是各维度差值平方和再开根号。实际检索时经常省掉开根号这一步,直接比较平方和就够了,能省不少计算。

3) 曼哈顿距离是各维度差值绝对值之和,计算最简单,没有乘法和开方,在高维稀疏场景下效率有优势。三种距离的计算过程对比:余弦相似度:先算点积 A·B,再算 |A| 和 |B|,最后做除法

欧氏距离:逐维度算差值、平方、累加,最后开根号

曼哈顿距离:逐维度算差值、取绝对值、累加不同场景的选型考量文本语义检索基本锁定余弦相似度,原因很直接:Embedding 模型输出的向量长度本身没有业务含义,一个句子长一点短一点不影响语义,我们只关心向量指向哪个方向。OpenAI 的 text-embedding-ada-002、BGE、M3E 这些模型出来的向量都建议用余弦相似度。图像检索更适合欧氏距离,ResNet、CLIP 这类视觉模型提取的特征向量,其数值大小本身携带了像素强度、纹理密度这些信息。人脸识别领域的 ArcFace、CosFace 虽然名字里带 Cos,但训练时用的是角度 margin,推理时用欧氏距离效果更稳定。曼哈顿距离在推荐系统的用户行为特征上有奇效,用户点击、购买这类行为天然是 0/1 稀疏向量,曼哈顿距离对这种数据不敏感于个别维度的极端值,鲁棒性比欧氏距离好。向量数据库的索引加速不管用哪种距离度量,暴力遍历 1 亿条向量肯定扛不住,所以向量数据库都会建索引。主流的索引算法:1)IVF 系列:先把向量空间切成 1000-10000 个聚类中心,查询时只在最近的几个聚类里找,Milvus、Faiss 都支持。

2) HNSW:构建多层图结构,高层稀疏跳跃、低层密集精确,Pinecone、Qdrant 默认都用这个。

3) PQ 量化:把 128 维向量切成 8 个子空间,每个子空间量化成 256 个码本,空间压缩 32 倍,精度损失可控。这些索引算法和距离度量是正交的,IVF 搭余弦、HNSW 搭欧氏都行,只要在建索引和查询时保持一致就没问题。实际踩坑经验1)向量没归一化就用余弦相似度,结果会很诡异。有些 Embedding 模型输出的向量本身不是单位向量,得自己先 L2 归一化再存进向量库。

2) 欧氏距离对数值尺度敏感,如果某几个维度的数值特别大,会把距离带偏。工业界常见做法是先做 z-score 标准化,让各维度方差一致。

3) 高维空间有”维度灾难”,当维度超过几百维,所有向量之间的距离都趋于相等,区分度变差。这时候降维或者换用近似算法比纠结用哪种距离更重要。

维基百科余弦相似度维基百科欧几里得距离维基百科曼哈顿距离

  • 提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?回答:归一化之后所有向量的模长都是 1,欧氏距离的平方展开是 |A|² + |B|² - 2A·B = 2 - 2A·B,而余弦相似度就是 A·B。两者是单调递减关系,排序结果完全一致。所以很多向量库内部会强制归一化,统一用点积来算,还能利用 SIMD 指令加速。- 提问:为什么说曼哈顿距离对高维稀疏数据更友好?
  • 回答:稀疏向量里大部分维度都是 0,有值的维度可能差异很大。欧氏距离会把大差异平方放大,一个维度差 10 就贡献 100;曼哈顿距离只是线性累加,差 10 就贡献 10。这样少数几个极端维度不会主导整体距离,对稀疏数据更稳定。- 提问:实际业务中怎么选向量搜索的距离度量?
  • 回答:先看 Embedding 模型官方推荐,大多数文本模型都建议余弦相似度。如果是自己训练的模型,就看训练时 loss 函数用的什么度量,推理时保持一致。实在拿不准就跑个 A/B 测试,用业务指标说话,别凭感觉猜。

数学公式与计算复杂度不同场景的选型考量向量数据库的索引加速实际踩坑经验

提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?提问:为什么说曼哈顿距离对高维稀疏数据更友好?提问:实际业务中怎么选向量搜索的距离度量?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号


来源: 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?.mhtml

  • 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?#

    • 有什么区别?
  • 本文已做格式统一与噪声清理,保留原始语义。

  • 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?

  • 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?#

    1. 向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别?VIP中等AI大模型RAG向量数据库标记分享211328面试问答向量搜索的核心就是衡量两个向量有多”像”,三种方法各有侧重:余弦相似度只看方向不看长度,两个向量夹角越小、值越接近 1,说明方向越一致。文本向量检索基本都用它,因为我们关心的是语义方向,一篇 100 字的文章和一篇 1000 字的文章只要讲的是同一个主题,余弦相似度就会很高。取值范围 -1 到 1,1 是完全同向,-1 是完全反向。欧几里得距离算的是空间中两点之间的直线距离,就是勾股定理那一套。图像检索、人脸识别这类场景用得多,因为像素特征向量本身就有”绝对位置”的含义,两张图的特征向量在空间里离得越近,长得就越像。取值 ≥ 0,越小越相似。曼哈顿距离把各维度的差值绝对值加起来,像在城市街区里沿着街道走,不能斜着穿。网格数据、稀疏特征向量用得比较多,比如地图坐标计算、高维稀疏文本特征。取值 ≥ 0,同样越小越相似。三种方法的选型逻辑:文本、推荐系统首选余弦相似度;图像、视频检索首选欧氏距离;网格坐标、稀疏高维数据考虑曼哈顿距离。

数学公式与计算复杂度假设有两个 n 维向量 A 和 B:1)余弦相似度的公式是两个向量的点积除以模长的乘积,计算量主要是 n 次乘法加 n 次加法,再算两个模长。Faiss、Milvus 这类向量数据库内部会对归一化后的向量做优化,归一化之后余弦相似度就等价于点积,省掉模长计算。

2) 欧氏距离是各维度差值平方和再开根号。实际检索时经常省掉开根号这一步,直接比较平方和就够了,能省不少计算。

3) 曼哈顿距离是各维度差值绝对值之和,计算最简单,没有乘法和开方,在高维稀疏场景下效率有优势。三种距离的计算过程对比:余弦相似度:先算点积 A·B,再算 |A| 和 |B|,最后做除法

  • 欧氏距离:逐维度算差值、平方、累加,最后开根号
  • 曼哈顿距离:逐维度算差值、取绝对值、累加不同场景的选型考量文本语义检索基本锁定余弦相似度,原因很直接:Embedding 模型输出的向量长度本身没有业务含义,一个句子长一点短一点不影响语义,我们只关心向量指向哪个方向。OpenAI 的 text-embedding-ada-002、BGE、M3E 这些模型出来的向量都建议用余弦相似度。图像检索更适合欧氏距离,ResNet、CLIP 这类视觉模型提取的特征向量,其数值大小本身携带了像素强度、纹理密度这些信息。人脸识别领域的 ArcFace、CosFace 虽然名字里带 Cos,但训练时用的是角度 margin,推理时用欧氏距离效果更稳定。曼哈顿距离在推荐系统的用户行为特征上有奇效,用户点击、购买这类行为天然是 0/1 稀疏向量,曼哈顿距离对这种数据不敏感于个别维度的极端值,鲁棒性比欧氏距离好。向量数据库的索引加速不管用哪种距离度量,暴力遍历 1 亿条向量肯定扛不住,所以向量数据库都会建索引。主流的索引算法:1)IVF 系列:先把向量空间切成 1000-10000 个聚类中心,查询时只在最近的几个聚类里找,Milvus、Faiss 都支持。

2) HNSW:构建多层图结构,高层稀疏跳跃、低层密集精确,Pinecone、Qdrant 默认都用这个。

3) PQ 量化:把 128 维向量切成 8 个子空间,每个子空间量化成 256 个码本,空间压缩 32 倍,精度损失可控。这些索引算法和距离度量是正交的,IVF 搭余弦、HNSW 搭欧氏都行,只要在建索引和查询时保持一致就没问题。实际踩坑经验1)向量没归一化就用余弦相似度,结果会很诡异。有些 Embedding 模型输出的向量本身不是单位向量,得自己先 L2 归一化再存进向量库。

2) 欧氏距离对数值尺度敏感,如果某几个维度的数值特别大,会把距离带偏。工业界常见做法是先做 z-score 标准化,让各维度方差一致。

3) 高维空间有”维度灾难”,当维度超过几百维,所有向量之间的距离都趋于相等,区分度变差。这时候降维或者换用近似算法比纠结用哪种距离更重要。

维基百科余弦相似度维基百科欧几里得距离维基百科曼哈顿距离

  • 提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?回答:归一化之后所有向量的模长都是 1,欧氏距离的平方展开是 |A|² + |B|² - 2A·B = 2 - 2A·B,而余弦相似度就是 A·B。两者是单调递减关系,排序结果完全一致。所以很多向量库内部会强制归一化,统一用点积来算,还能利用 SIMD 指令加速。- 提问:为什么说曼哈顿距离对高维稀疏数据更友好?
  • 回答:稀疏向量里大部分维度都是 0,有值的维度可能差异很大。欧氏距离会把大差异平方放大,一个维度差 10 就贡献 100;曼哈顿距离只是线性累加,差 10 就贡献 10。这样少数几个极端维度不会主导整体距离,对稀疏数据更稳定。- 提问:实际业务中怎么选向量搜索的距离度量?
  • 回答:先看 Embedding 模型官方推荐,大多数文本模型都建议余弦相似度。如果是自己训练的模型,就看训练时 loss 函数用的什么度量,推理时保持一致。实在拿不准就跑个 A/B 测试,用业务指标说话,别凭感觉猜。

数学公式与计算复杂度不同场景的选型考量向量数据库的索引加速实际踩坑经验

提问:余弦相似度和欧氏距离在归一化向量上是等价的,能解释一下为什么吗?提问:为什么说曼哈顿距离对高维稀疏数据更友好?提问:实际业务中怎么选向量搜索的距离度量?热门面试题目榜更多说说 Java 中 HashMap 的原理?9130Java 中的序列化和反序列化是什么?6255MySQL 索引的最左前缀匹配原则是什么?5662Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?5067Java 中有哪些集合类?请简单介绍4854MySQL 的索引类型有哪些?4845详细描述一条 SQL 语句在 MySQL 中的执行过程。4218什么是 RAG?RAG 的主要流程是什么?4151MySQL 的存储引擎有哪些?它们之间有什么区别?4092数据库的脏读、不可重复读和幻读分别是什么?3900推荐教程更多AI 超级智能体亿级流量点赞系统教程智能协同云图库项目教程预览用户交流一起刷题学习、求职交流、反馈建议、获取更新通知面试鸭《用户协议》《隐私政策》友情链接编程导航老鱼简历代码小抄剪切助手联系我们商务合作站长:程序员鱼皮关注我们扫码关注面试鸭公众号

  • 本文已做格式统一与噪声清理,保留原始语义。

Share Article

If this article helped you, please share it with others!

向量数据库中,常见的向量搜索方法:余弦相似度、欧几里得距离和曼哈顿距离分别是什么?有什么区别? 整理
https://estars-blog.pages.dev/posts/求职作战室-面经-agent面经-向量数据库中-常见的向量搜索方法-余弦相似度-欧几里得距离和曼哈顿距离分别是什么-有什么区别-_整理/
Author
Estars
Published at
2026-06-10
License
CC BY-NC-SA 4.0
Related Posts Smart
1
什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一? 整理
求职作战室 # 什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一? ## 问题 什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一? ## 标准回答
2
什么是 Spring AI 提出的模块化 RAG 架构?预检索、检索和后检索阶段各自负责什么? 整理
求职作战室 # 什么是 Spring AI 提出的模块化 RAG 架构?预检索、检索和后检索阶段各自负责什么? ## 问题 什么是 Spring AI 提出的模块化 RAG 架构?预检索、检索和后检索阶段各自负责什么? ## 标准回答 什么是 Spri
3
什么是上下文查询增强?它有什么作用?如何基于 Spring AI 实现上下文查询增强来处理无关问题? 整理
求职作战室 # 什么是上下文查询增强?它有什么作用?如何基于 Spring AI 实现上下文查询增强来处理无关问题? ## 问题 什么是上下文查询增强?它有什么作用?如何基于 Spring AI 实现上下文查询增强来处理无关问题? ## 标准回答 什么
4
当对话历史实在太长、裁剪也不够用时,还有什么办法?什么是 Compaction?OpenClaw 的 Compaction 策略是怎样的? 整理
求职作战室 # 当对话历史实在太长、裁剪也不够用时,还有什么办法?什么是 Compaction?OpenClaw 的 Compaction 策略是怎样的? ## 问题 当对话历史实在太长、裁剪也不够用时,还有什么办法?什么是 Compaction?Op
5
LLM 的 Context Window 有上限,长对话时如何保证 Agent 仍然能正常工作?OpenClaw 是怎么做的? 整理
求职作战室 # LLM 的 Context Window 有上限,长对话时如何保证 Agent 仍然能正常工作?OpenClaw 是怎么做的? ## 问题 LLM 的 Context Window 有上限,长对话时如何保证 Agent 仍然能正常工作?
Random Posts Random
Profile Image of the Author
Estars
这条路要走完,才能看到世界的终点,是海纳百川,还是星火燎原。
公告
欢迎来到我的博客!这是一则示例公告。
Music
Cover

Music

No playing

0:00 0:00
No lyrics available
Categories
Tags
Site Statistics
Posts
91
Categories
5
Tags
44
Total Words
374,063
Running Days
0 days
Last Activity
0 days ago

Table of Contents