向量数据库
什么是向量数据库
假设现在需要存储和描述一个人的对象实体,在传统关系型数据库中该怎么设计?一般来说,会设置如下字段:姓名(有的还会拆分为last name和first name)、年龄、性别、身高、体重、 出生地点、出生年月、联系电话、邮箱、爱好 ...... 如果需要尽量精确描述一个人,字段可能会非常多,描述人与人之间的关联也会极其复杂。在机器学习领域,这种构建对象property的过程叫做特征工程(就是线性代数里面的概念)。乍一听似 乎也没什么问题,但在海量数据的情况下,超级宽表对传统行式关系型数据库的性能要求会特别高,而且实际生活中很多事物难以结构化描述,比如自然语言、图片、视频。
为此科学家们提出了Embedding,将一个对象表达成N维的向量 [0.1, 0.2, 0.3, ...]
。这个N维向量是经过神经网络多个layer组合后计算出来的,而这个计算出来的向量结果对常人是不具备可解释性的,但对机器来说是有意义的。一个向量代表一个对象的高维语义信息,每个对象之间的相似性就是对应向量在向量空间的近似度,也就是向量之间的距离。
而向量数据库(Vector Database)就是专门用来存储这些vector embedding的一种数据库,旨在提高对vector embedding的利用效率。
相似度
欧氏距离公式