Milvus-04-collection-metric_type度量类型COSINE/L2/IP

目录

COSINE:余弦的方式计算相似度

只看方向,不看长度,两个向量方向越一致,说明向量越相近,-1最不像,1最像

假设有3个二维向量,分别是A[1,1],B[2,1],C[-1,-1],如果从坐标系中画3个点 ,会发现A和B的方向差不多,A和C的方向相反

也可以通过代码计算A和B的相似度约等于0.9486832618713379

cpp 复制代码
import torch
import torch.nn.functional as nn

vec1 = torch.tensor([[1.0, 1.0]])
vec2 = torch.tensor([[2.0, 1.0]])

cos_sim = nn.cosine_similarity(vec1, vec2, dim=1)

print("余弦相似度张量:", cos_sim)
print("余弦相似度数值:", cos_sim.item())

计算A和C的相似度约等于-0.9999999403953552

cpp 复制代码
vec1 = torch.tensor([[1.0, 1.0]])
vec2 = torch.tensor([[-1.0, -1.0]])

由上面可知A和B很像,但是A和C完全不像(甚至相反)

L2:欧氏距离的方式计算相似度

不看方向,只看两个向量之间的距离,A和B越近,就说明A和B越像

假设有3个二维向量,分别是A[1,1],B[2,1],C[-1,-1],从坐标系中画3个点A和B很近,A和C较远

IP:内积的方式计算相似度

有人说是A向量在B向量上的投影再乘以B,其实我觉得没必要去这样理解内积,上述文章已经阐述过COS和L2,一个通过方向,一个通过距离,而IP则是通过方向+向量长度(强度)来综合判断,下图一眼就可明白内积是什么意思

虽然A和C方向完全一致,但是你架不住B的力度大,所以说从内积的规则判断,A和B更相似,而A和C仅仅是方向一致而已

说白了就是你C确实和我一条心,但是你帮不上多大忙,虽然B和我不是一条心,但是人家出手即可帮大忙

cpp 复制代码
# a(2,2) c(1,1) = 2x1 + 2x1 = 4  (A和C的内积4)
# a(2,2) b(5,0) = 2x5 + 2x0 = 10 (A和B的内积10)

不同的相似度规则,该什么时候使用

CONSINE常用来处理文本语义 ,例如喜欢,爱慕

L2常用于数字处理,例如音频视频相似度

IP不常用,一般用在高频搜索中,其中IP的强度通常用来表示关键词的出现次数,这个具体场景我也不清楚,不是很了解,没做过,不过本文主要讲述的是milvus,这个了解一下就行

下一篇:Milvus-05-将文本变成向量并入库

相关推荐
TheBestRucy8 天前
从零构建企业级“中文法律智能问答系统”:FastAPI+Milvus+混合检索+真流式RAG实战
fastapi·milvus
Flynn Liang9 天前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库
kyrie_sakura10 天前
大模型学习19 大模型学习 - LangChain2_Retrieval(RAG-文档处理-向量处理检索-Milvus)
学习·langchain·milvus
Maiko Star10 天前
*【HM-LC】Milvus向量库详解:Collection、索引、混合检索与LangChain实战
langchain·milvus
霸道流氓气质12 天前
AI 图片管理平台:Spring AI 原生多模态、Milvus 向量语义检索与 MinIO 预签名安全管控的 React + 全栈生产级实战
人工智能·spring·milvus
一枕槐安48713 天前
多模态RAG实战:PDF图文混合文档检索问答本地跑通
langchain·pdf·milvus·ai应用开发·多模态rag
ai大模型-探索者17 天前
BGE-M3三种向量在Milvus怎么存(稠密、稀疏、多向量)
milvus·稀疏·多向量·稠密
唠点键盘之外的19 天前
29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路
人工智能·spring·milvus
ai大模型-探索者19 天前
Milvus向量数据库(介绍与使用)
数据库·milvus
Crayon Lin20 天前
Milvus向量数据库入门
数据库·milvus