
分类骨架表流派代表算法数学归属对模长典型战场几何派欧氏 L2、曼哈顿 L1、切比雪夫 L∞空间直线/网格/极值距离敏感图像 CV、坐标、聚类角度派余弦相似度夹角余弦完全脱敏文本语义、RAG投影派内积Dot / IP未归一化的余弦极度敏感推荐系统、对比学习离散派汉明、Jaccard比特翻转 / 集合交并—哈希码、生物序列、召回 关键恒等式向量 L2 归一化后IP Cosine差一个常数偏移。这是工业界明明想要余弦却配 IP的底层依据 。1️⃣ 余弦相似度Cosine Similarity概览cos(A,B)A⋅B∥A∥∥B∥∈[−1,1] \cos(A,B)\frac{A\cdot B}{\|A\|\|B\|}\in[-1,1]cos(A,B)∥A∥∥B∥A⋅B∈[−1,1]只保留方向、彻底抹掉模长。文本语义检索的默认答案也是 RAG 场景使用率最高的度量 。推导直觉两向量在单位超球面上投影的重叠程度。除以模长这一步本质是把两条不同长度的箭头都压到半径为 1 的球面上再比方向。几何上等价于球面距离的一种单调变换。优缺点陷阱✅ 对向量长度完全不敏感 → 200 字和 2000 字的同一篇文章 embedding 不会因长度被误判✅ 高维稀疏文本场景最稳❌高维方向陷阱当所有向量模长趋同Transformer 输出的常态余弦区分度会坍缩且完全丢掉模长里可能藏的置信度信息❌ 比纯 IP 多两次 sqrt 一次除法虽可预归一化消掉但仍略重工程落地细节入库前对向量做 L2 归一化查询时直接用 IP既保余弦语义又拿 IP 的速度——这是 Milvus / Faiss / Qdrant 工程里的标准手法HNSW 索引下余弦通常要转成1 - cosine当距离用注意BGE 系列官方不推余弦推 IP——用错 L2 召回率能从 78% 砸到 40%使用率工业 RAG 场景约65-70%的默认选择尤其 OpenAI / M3E / Moka 这类模型配套文档里写明推荐余弦的。使用场景文本语义检索 / RAG新闻相似度、智能客服意图匹配、论文查重主题分类、文本聚类多语言语义对齐Sentence-BERT 产出归一化向量时余弦 IP随便挑⚠️ 不适合推荐系统里模长本身编码了热度/置信度的场景这时该用 IP结合 ML 框架 / 大模型 / 向量库的延伸PyTorchtorch.nn.functional.cosine_similarity但生产里更多人手动F.normalizematmul走 IP 路径Sentence-BERT / all-MiniLM / text-embedding-ada-002默认输出接近归一化余弦 ≈ IPOpenAI text-embedding-3 系列Azure 官方文档明确选余弦BGE / BGE-M3官方文档推IP 而非余弦训练目标是内积导向的对比学习热门向量库采用比例 推荐指数向量库支持情况推荐指数Milvus原生支持 Cos/IP/L2/Hamming/Jaccard⭐⭐⭐⭐⭐文本场景首选 CosPineconeCos / L2⭐⭐⭐⭐⭐默认 CosWeaviateCos 为默认Dot / L2 可选⭐⭐⭐⭐⭐QdrantCos / Dot / L2⭐⭐⭐⭐⭐Faiss无原生 Cos靠 normalize IP 模拟⭐⭐⭐⭐间接支持ChromaCos / L2⭐⭐⭐⭐2️⃣ 内积 / 点积Dot Product / Inner Product概览A⋅B∑iaibi A\cdot B\sum_i a_i b_iA⋅Bi∑aibi余弦去掉分母的版本。归一化后 Cosine × 1常数所以文本场景想用余弦又想快的工业解法就是入库归一化 查 IP。推导直觉投影长度之积。几何解释A 在 B 方向上的投影 × B 的模。同时吃方向一致性和模长大小两份信息。优缺点陷阱✅计算最快纯乘加无 sqrt 无除法SIMD / GPU 吃满✅ 保留模长 → 推荐系统里热门物品模长更大这种信号能进排序❌未归一化时会被长向量霸榜——高频词/长文档容易被误判为更相关❌ 对比学习训练的模型若没显式用模长编码信息IP 反而引入噪声工程落地细节归一化后 IP Cosine是 Faiss 的官方推荐路径index faiss.IndexFlatIP() 入库前faiss.normalize_L2()分布式场景下 IP 可切分到多卡多节点做 partial sum比 Cos 的同步归一化友好HNSW 支持 IP 的库Milvus/Qdrant在建图时会按 IP 单调性排边使用率RAG 文本场景约20-25%主要是 BGE / M3E 用户 Faiss 用户推荐系统 50%。使用场景推荐系统双塔召回“用户向量 × 物品向量”模长编码点击置信度BGE / BGE-M3 / M3E 配套检索官方明确推 IP换 Cos 或 L2 都掉召回Faiss 系工程科研/离线批检索IP 归一化 事实标准对比学习训练的 embeddingColBERT 式 late interaction 也常用 IP 变体⚠️ 不适合未归一化 文本长度方差大的场景用 Cos结合 ML 框架 / 大模型 / 向量库的延伸ColBERT / BGE-M3late interaction 的 token-level 相似度就是 IP 累积Faiss (Meta)IndexFlatIP/IndexIVFFlat IPIndexHNSWFlat也支持 IP —— GPU Faiss 对 IP 的 kernel 优化最成熟Milvus “IP” metric背后就是走内积配合 HNSW / DiskANNRedisVL低延迟实时推荐常选 IP热门向量库采用比例 推荐指数向量库支持推荐指数MilvusIP 原生⭐⭐⭐⭐⭐BGE 用户首选QdrantDot 原生⭐⭐⭐⭐⭐Pinecone支持称 Dot⭐⭐⭐⭐主推还是 CosWeaviateDot 可选⭐⭐⭐⭐FaissIP 是一等公民⭐⭐⭐⭐⭐Chroma不支持 Dot仅 Cos/L2⭐⭐需换库3️⃣ 欧氏距离 L2概览d(A,B)∑i(ai−bi)2 d(A,B)\sqrt{\sum_i(a_i-b_i)^2}d(A,B)i∑(ai−bi)2几何直线距离。对绝对数值差异敏感。推导直觉勾股定理的高维推广。两点的物理间隔。优缺点陷阱✅ 图像像素级 / 特征点匹配最直觉✅ CV 特征ResNet 最后一层 bottleneck常配 L2❌高维空间距离趋同维度灾难—— 1000 维以上几乎所有点两两 L2 都挤在一起❌ 含 sqrt比 IP 慢且同一篇文档长短不同会被 L2 误判为远工程落地细节HNSW 里 L2 是仅次于 IP 的第二常见距离IVF-PQ 量化场景下 L2 有解析的码本优化Faiss 的IndexIVFPQ默认 L2注意BGE 用户配 L2 是经典踩坑召回率直接腰斩使用率RAG 文本场景 5%CV / 多模态 / CLIP 图像侧 ≈ 60%。使用场景人脸特征匹配ArcFace 类 512-D医学影像病灶对比、工业检测尺寸差异CLIP 图像侧检索、商品图搜颜色形状绝对差异地理坐标 / 物理传感器数据❌ 不建议文本语义 RAG除非模型明确用 L2 训的结合 ML 框架 / 大模型 / 向量库的延伸CLIP图文双塔图像侧常 L2、文本侧常 Cos跨模态检索时两塔度量可能不一致需要桥接FaissIndexFlatL2是默认GPU Faiss L2 kernel 极成熟Milvus / Pinecone / Qdrant / Weaviate全部把 L2 当一等公民热门向量库采用比例 推荐指数向量库支持推荐指数MilvusL2 原生⭐⭐⭐⭐⭐CV 场景PineconeL2 原生⭐⭐⭐⭐⭐图像检索默认WeaviateL2 可选⭐⭐⭐⭐QdrantL2 原生⭐⭐⭐⭐⭐FaissL2 是默认⭐⭐⭐⭐⭐ChromaL2 原生⭐⭐⭐⭐4️⃣ 曼哈顿距离 L1概览d(A,B)∑i∣ai−bi∣ d(A,B)\sum_i|a_i-b_i|d(A,B)i∑∣ai−bi∣网格世界步数计对异常值比 L2 鲁棒平方效应没了。推导直觉每个维度独立走绝对值之和。L2 把大偏差平方放大L1 线性惩罚 → 异常点权重更低。优缺点陷阱✅ 异常值鲁棒 → 稀疏高噪数据友好✅ 无 sqrt比 L2 便宜❌ 高维语义场景几乎没人用方向信息丢太多❌ 多数向量库对 L1 的 HNSW 支持弱单调性不满足三角不等式严格优化使用率 3% niche。使用场景推荐系统用户行为序列匹配点击/曝光数稀疏、长尾噪点多基因序列比对、交通网格路径规划异常检测前置距离热门向量库采用比例 推荐指数向量库支持推荐指数Milvus不直接暴露 L1需自定义⭐⭐Faiss无原生 L1⭐Weaviate / Qdrant / Pinecone未列为主度量⭐⭐ L1 在主流向量检索里属于有更好算法也不用它的状态除非你的特征是天然 L1 语义如城市街区坐标。5️⃣ 切比雪夫距离 L∞概览d(A,B)maxi∣ai−bi∣ d(A,B)\max_i|a_i-b_i|d(A,B)imax∣ai−bi∣只看最差的那个维度。推导直觉棋盘上王的走法——各维度独立移动总代价由最长那步决定。使用场景基因序列、物流仓储格子坐标资源调度瓶颈维度决定整体代价向量检索主流通用库基本不把它当检索度量属于专用场景推荐指数通用向量库 ⭐专用生物/运筹系统才碰。6️⃣ 汉明距离Hamming概览d(A,B)∑i1(ai≠bi) d(A,B)\sum_i \mathbb{1}(a_i\neq b_i)d(A,B)i∑1(aibi)二值 / 哈希码场景专用数有多少位不一样。推导直觉比特级翻转计数。使用场景二值哈希码检索SimHash / FarmHash 类召回生物序列比对DNA k-mer 二值化本地敏感哈希LSH的桶路由热门向量库Milvus原生 Hamming metric配二进制向量类型Faissbinary index 系列IndexBinaryFlat/IndexBinaryIVF走汉明其余库Pinecone/Weaviate/Chroma基本不支持二值需自己卷推荐指数二值场景 Milvus/Faiss ⭐⭐⭐⭐⭐通用场景 ⭐。7️⃣ Jaccard 相似度概览J(A,B)∣A∩B∣∣A∪B∣ J(A,B)\frac{|A\cap B|}{|A\cup B|}J(A,B)∣A∪B∣∣A∩B∣集合交并比不是真向量度量是稀疏布尔 / ID 集合的。使用场景召回层粗排用户点击 item set vs 候选 item set去重 / Near-duplicate detection多标签分类相似度热门向量库Milvus原生 Jaccard metricWeaviateBM25 向量混合检索里 Jaccard 思想渗透Elasticsearchcardinalityset操作更常用不是纯 Jaccard 接口推荐指数Milvus ⭐⭐⭐⭐其余 ⭐⭐。 全维度横向对比算法数学本质模长敏感度计算复杂度推导直觉优点缺点 / 陷阱使用率(工业RAG估)使用场景热门库推荐指数余弦夹角 cos完全脱敏中可预归一化→IP单位球面方向重叠文本通用、长度无关丢模长置信度高维方向坍缩~65-70%文本语义/RAG/主题聚类OpenAI系Milvus⭐⭐⭐⭐⭐ Pinecone⭐⭐⭐⭐⭐ Weaviate⭐⭐⭐⭐⭐ Qdrant⭐⭐⭐⭐⭐ Faiss⭐⭐⭐⭐ Chroma⭐⭐⭐⭐内积IP投影积极度敏感最低纯乘加方向×模长最快保留置信度Faiss一等公民未归一化被长向量霸榜~20-25%文本 推荐50%推荐召回/BGE系/ColBERT/FaissMilvus⭐⭐⭐⭐⭐ Qdrant⭐⭐⭐⭐⭐ Faiss⭐⭐⭐⭐⭐ Pinecone⭐⭐⭐⭐欧氏L2直线距离敏感中含sqrt勾股高维推广CV直觉Faiss默认高维趋同文本长短误判5%文本CV~60%人脸/影像/CLIP图侧/坐标全部⭐⭐⭐⭐⭐CV场景曼哈顿L1绝对偏差和敏感鲁棒低无sqrt网格步数和抗异常值稀疏友好高维语义不用HNSW支持弱❤️%基因/行为序列/运筹主流库⭐⭐切比雪夫L∞最大维偏差敏感低棋盘王步瓶颈维度主导极少用于向量检索1%基因/仓储格点主流库⭐汉明比特翻转数—极低popcount位级差异二值哈希最快仅二值/哈希码nicheSimHash/LSH/生物序列Milvus⭐⭐⭐⭐⭐ Faiss(binary)⭐⭐⭐⭐⭐Jaccard集合交并—低重叠占比稀疏集合语义清非真向量需转boolniche召回粗排/去重Milvus⭐⭐⭐⭐注使用率为行业观感估数RAG 文本检索口径非精确统计推荐指数 ⭐ 数为该库在此算法上的成熟度 官方推荐力度综合。 汇总洞察架构师级三条1. 归一化后 IP Cosine工程选型的核心恒等式绝大多数 Transformer embeddingSentence-BERT / MiniLM / OpenAI ada输出已接近单位球面入库前L2-normalize 查 IP 是 Faiss / Milvus / Qdrant 的通用最优解——既拿了余弦的语义又拿了 IP 的 SIMD 速度 。2. 模长是否携带置信度决定 Cosine vs IP训练目标是对比学习且模长显式编码热度/置信BGE / 双塔推荐→IP用 Cosine 会把模长信息洗掉召回掉点训练目标就是方向对齐OpenAI text-embedding-3 官方说余弦、Sentence-BERT 默认余弦→Cosine / 归一化IP 都可3. Embedding 模型训练目标 度量选择的唯一真理“Embedding 模型用什么训练目标你就用什么度量。” —— BGE 配 L2 召回率 40%→78% 的反例是所有 RAG 工程师的第一课。选型口诀文本不确定 → CosineBGE/M3E → IP推荐/对比学习 → IP图像/CV → L2二值哈希 → 汉明集合召回 → Jaccard。向量库层面 Milvus / Qdrant 是全度量覆盖的安全牌Pinecone 偏 Cos 舒适区Faiss 是 IPL2 的性能王但无 DB 能力Chroma 轻量 prototyping 够用。