开启左侧

向量数据库和嵌入模型

[复制链接]
xianyina 发表于 昨天 20:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
        各位读者朋友们,感谢您阅读到本文,我是笠泱,这是《人工智能&机器学习》系列第二期,本期分享向量数据库(Vector Database)和嵌入模型(Embedding Model)。
本期导语

        关注AI、大模型的朋友们应该都听过用RAG(Retrieval-augmented Generation,检索增强生成)搭建知识库,RAG的基础组成之二就是向量数据库和嵌入模型,在当下的IT领域,至少有四类数据库是必须了解,以Mysql为代表的关系型数据库(RDBMS),以Redis、MongoDB为代表的NoSQL,以Amazon Aurora、TiDB、OceanBase为代表的NewSQL,再者就是向量数据库。
        在正式阅读本文前,我们先来看几个问题:
        1、什么是向量?
        2、什么是文本/图片向量化?
        3、什么是向量数据库?有哪些向量数据库?
        4、将数据保存进向量数据库后,该如何检索查询?
        5、向量数据库和Mysql的查询与什么区别和不同?
向量数据库

        Vector是向量或矢量的意思,向量是数学里的概念,而矢量是物理里的概念,但二者描述的是同一件事。向量的准确定义:向量是用于表示具有大小和方向的量。具体而言,向量可以在不同的维度空间中定义,最常见的是二维和三维空间中的向量,但理论上也可以有更高维的向量。例如,在二维平面上的一个向量可以写作(x,y),这里x和y分别表示该向量沿两个坐标轴方向上的分量;而在三维空间里,则会有一个额外的z坐标,即(x,y,z)。
        如我们所见,每个数值向量都有 x 和 y 坐标(或者在多维系统中是 x、y、z,...)。x、y、z... 是这个向量空间的轴,称为维度。对于我们想要表示为向量的一些非数值实体,我们首先需要决定这些维度,并为每个实体在每个维度上分配一个值。
        例如,在一个交通工具数据集中,我们可以定义四个维度:“轮子数量”、“是否有发动机”、“是否可以在地上开动”和“最大乘客数”。然后我们可以将一些车辆表示为:
向量数据库和嵌入模型-1.png


        因此,我们的汽车Car向量将是 (4, yes, yes, 5),或者用数值表示为 (4, 1, 1, 5)(将 yes 设为 1,no 设为0)。向量的每个维度代表数据的不同特性,维度越多对事务的描述越精确,我们可以使用“是否有翅膀”、“是否使用柴油”、“最高速度”、“平均重量”、“价格”等等更多的维度信息。
        每个向量都有一个长度和方向。例如,在这个图中,p 和 a 指向相同的方向,但长度不同。p 和 b 正好指向相反的方向,但有相同的长度。然后还有c,长度比p短一点,方向不完全相同,但很接近。
向量数据库和嵌入模型-2.png


        那么,哪一个最接近 p 呢?
        如果“相似”仅仅意味着指向相似的方向,那么a 是最接近 p 的。接下来是 c。b 是最不相似的,因为它正好指向与p 相反的方向。如果“相似”仅仅意味着相似的长度,那么 b 是最接近 p 的(因为它有相同的长度), 接下来是 c,然后是 a。
        由于向量通常用于描述语义意义,仅仅看长度通常无法满足需求。大多数相似度测量要么仅依赖于方向,要么同时考虑方向和大小。
        在数学中向量间的相似度测量即相似度计算,有四种常见的计算方法,这里不展开讨论。

  • 欧几里得距离 Euclidean distance
  • 曼哈顿距离 Manhattan distance
  • 点积 Dot product
  • 余弦相似度 Cosine similarity
        向量存储(Vector Database/VectorStore)是一种用于存储和检索高维向量数据的数据库或存储解决方案,它特别适用于处理那些经过嵌入模型转化后的数据。在向量数据库中,查询与传统关系数

原文地址:https://blog.csdn.net/qq_42969817/article/details/148267653
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )