目录
背景
语义相似度的计算是一个比较复杂的过程。今天打算先比较详细的介绍下几个相似度的距离衡量算法。
相似度的排名衡量,在向量数据库 vector db 的 query 中,被大量使用。还是直接上干货,理解下背后的逻辑和概念比较重要,后面看看源码 chroma vector db 是怎么处理这个过程的。
cosine距离
概念
cosine距离基于余弦相似度的计算。这类算法之前在我之前写的LLM(3)中对原理有详细介绍,不熟悉的读者可以去看看,余弦相似度总的来说就是衡量N维空间上的两个N维向量他们的方向是否相似。实际上,从数学的角度上说,他并不关心绝M维分量绝对数值的大小,更关心的是两个向量间方向是否一致。说直白点,可以举个例子,假设你是一个学生,我们需要定义一个M维向量来表示你对所有学科知识的掌握度,假设这3维向量分别是[English, Math, Physical],一个小学生的3维向量可能是[0.13, 0.16, 0.05], 一个大学生他的3维向量可能是[0.63, 0.84, 0.45], 虽然在绝对值的投影上,他们差别很大,毕竟大学生掌握的知识比小学生多很多。但在向量方向的维度上,你会方向他两基本保持了一致,都是数学比较’突出‘,所以我们可以估计他们两的数学上都有些优势,从这个意义上进行划分,我们可以将他们归为同一类人,即数学比较好的那类人。尽管两者在绝对投影上差距很大,但是那不重要,重要的是相对方向的一致性。
总结来说,Cosin