RAG核心工作原理之余弦相似度!小白也能看懂!
这集接着讲 RAG 里最核心的一步——余弦相似度,它到底是怎么算的。
RAG 的一个核心功能,是把我们的输入向量化,映射到向量空间里,再去向量数据库中找到跟这个输入向量相似的那部分内容取回来,交给大语言模型。那它是怎么找到「相近」的内容的?用的就是余弦相似度。
上一集讲 self-attention 的 Q、K、V 时提过,核心就是两个向量的点积。一个向量乘以另一个向量,结果等于这个向量的长度,乘以另一个向量在它方向上的投影。写成公式就是:a 向量乘以 b 向量,等于 a 的长度乘以 b 的长度,再乘以它们夹角的 cosine。
余弦相似度的公式则是:a 和 b 的点积,除以 a 的长度乘以 b 的长度。而点积本身就等于 a 的长度乘 b 的长度再乘 cos Theta,上下约分一约掉,结果就只剩下 cos Theta。
所以余弦相似度的意思其实就是两个向量的夹角:夹角是 0,说明两个向量基本完全一样;夹角越小代表越相似;离得越远、甚至方向相反,就代表越没有关系。
RAG 正是靠这个来工作的:拿我们输入的向量去和向量库里每个目标向量算余弦相似度,比一比 Theta 夹角的大小,来决定该取回哪一部分内容。因为这些内容本质上都是压缩之后的向量,所以它可能会按相似度大小排序,返回若干个结果给我们。这就是 RAG 最核心的工作原理之一。






