简单了解向量搜索
前言 最近看了篇文章,了解到了Vector Search。什么是Vector Search?来看看GPT的解释: 向量搜索是一种利用向量表示数据,并基于向量之间的相似性进行搜索的技术。它不同于传统的基于关键词的搜索,能够捕捉数据之间更深层次的语义关系,从而提高搜索的准确性和效率。 相较于基于关键词的搜索,将文本、图片等非数值型数据转换为向量形式,更能发现数据的特征,并发现数据之间的相似性。 至于如何将非数值型数据转换为向量,来开下面这个例子: 用“1”表示“是”,用“0”表示“否” 交通工具 轮子数量 有引擎吗 陆地上运动吗 最大承载人数 汽车 自行车 三轮车 摩托车 帆船 轮船 把非数值型数据转换为向量,实际上就是把这些数据的特征用数值表示。比如对于汽车来说,它在这个例子中对应的向量就是。 基础理论 向量之间的相似性 观察向量,和,哪个向量与更“相似”?向量与有着相同的方向,但模长更小;而与有着相同的模长,但方向只是相近。如果相似指的是方向上的相似,那么与更相似。而如果相似指的是模长,那么与更相似。 在矢量搜索中,很少单独根据模长来判断两个向量是否相似。相似性通常取决于方向,或者方向和模长。 相似性的评估方法 评估两个向量是否相似,通常有四种数学方法: 欧式距离:直接计算两个向量“箭头”的直线距离。 表示的第个分量 曼哈顿距离:计算两个点之间沿着坐标轴行走的距离。 表示的第个分量 点积:将相同维度的分量相乘再相加。 余弦值:两个向量夹角的、余弦值。 这四种方法中,欧氏距离是最常用的,而曼哈顿距离与欧氏距离相似,应用这两种方法得到的结果通常也相似。而当需要评估相似性的向量模长一致时,使用余弦值是更好的方法,因为它只与夹角相关。点积与余弦值类似,但在需要大量计算的情况下,点积通常有着更好的性能。 简单的例子 由于在屏幕上呈现二维向量较为方便,因此选取前言中的“轮子数量”与“有引擎吗”作为特征。得到4个向量,分别是,它们在图上呈现为: 随后分别计算摩托车与自行车、三轮车、汽车的相似性:...