向量数据库与常见的搜索算法

一、引入

在深度学习领域,每个实体都是高维向量,每个维度都是某种属性的刻画。比如一行N个字的文本,可以转成N*256维张量,一个图片可以转成3*100*100张量。

将这些向量投射到空间中,可以发现越“相似”的实体,他们的向量也在空间中更“接近”。这样,就可以在其附近搜索相邻的向量,从而获得相似的实体——最近邻问题。

但是传统的数据库的查询方式,并不能很好的适用于向量数据。向量数据库配备了专门的搜索算法。

二、最近邻算法

(一)如何衡量两个向量的距离?

常见的有

  • 向量的夹角
  • 向量的欧氏距离

(二)如何找到最近邻向量?

1.暴力搜索

逐一计算、比较,效率低但效果完美。实际中一般不采用这种方法,而是采用一些逼近最近邻的方法——近似最近邻(Approximate Nearest Neighbors, ANN),如下面的聚类搜索。

2.聚类搜索

先根据某种方法进行聚类,找到离目标向量最近的中心点,然后在该类中逐一搜索,找到该类中距离目标向量最近的点。聚类数量越多,效率越低但效果越好。

3.位置敏感哈希算法(Local Sensitive Hashing, LSH)

哈希算法就是把一个实体转成一个固定长度的数字,当实体数量大于哈希值容量时,就会出现“碰撞”,即两个实体对应同一个哈希值。向量数据库构建了一种哈希算法,增大碰撞的几率,这样向量就被分

你可能感兴趣的:(技术笔记,数据库,深度学习,gpt)