了解向量数据库
ANN 搜索是关系型数据库无法提供的功能。关系型数据库只能用于处理具有预定义结构、可直接比较值的表格型数据。因此,关系数据库索引也是基于这一点来比较数据。但是 Embedding 向量无法通过这种方式直接相互比较。因为我们不知道向量中的每个值代表什么意思,无法使用关系型数据库来确定一个向量是否一定小于另一个向量,唯一能做的就是计算两个向量之间的距离。
如果两个向量之间的距离很小,可以假设它们所代表的特征相似;如果距离很大,可以假设它们代表的数据十分不同。对我们而言,向量距离及其含义是有用的。我们可以创建索引结构,高效搜索这些数据。但是为向量数据构建索引也有不小挑战:计算两个向量间距离成本高昂,而且向量索引一旦构建完成后,不易于修改。因此,我们无法直接使用传统的关系型数据库来处理向量数据,需要使用专为向量数据而打造的向量数据库。
Milvus 是一款专为向量数据处理而设计的向量数据库,可以解决传统关系型数据库无法处理向量的问题,为海量向量数据高效构建索引。为了满足云原生的要求,Milvus 将计算和存储以及不同的计算任务(查询、数据处理和索引)分离开来。用户可以根据不同的应用灵活扩展每个组件。无论是数据插入密集型应用还是搜索密集型应用, Milvus 都能够轻松应对。如果有大量插入请求涌入,用户可以临时水平和垂直扩展索引节点以处理数据。同样,如果没有大量插入数据,但有大量搜索操作,用户可以减少索引节点的数量,并提高查询节点的吞吐量。Milvus 的系统架构设计(见图2