向量数据库:初学者指南!

向量数据库初学指南!

在不断增长的数据复杂性和高维信息时代,传统数据库在高效处理和提取复杂数据集中的意义时常不足。而向量数据库则作为一种技术创新应运而生,解决了不断扩大的数据领域所带来的挑战。

向量数据库由于其高效存储、索引和搜索高维数据点(通常称为向量)的独特能力,在各个领域中都获得了重要的地位。这些数据库被设计用于处理每个条目都以多维空间中的向量表示的数据。这些向量可以表示各种信息,例如数值特征、来自文本或图像的嵌入,甚至是复杂的分子结构等。

让我们用一个二维网格来表示向量数据库,其中一个轴表示动物的颜色(棕色、黑色、白色),另一个轴表示大小(小、VoAGI、大)。

在这个表示中:
– 图像A:棕色,VoAGI大小
– 图像B:黑色,小尺寸
– 图像C:白色,大尺寸
– 图像E:黑色,大尺寸

你可以想象每个图像都是根据其颜色和大小属性在这个网格上绘制的点。尽管实际的向量空间可能有更多维度,并且使用复杂的搜索和检索技术,但这个简化的网格捕捉了向量数据库的视觉表示方式的本质。

像我给一个五岁孩子解释向量数据库一样:

想象你有很多不同种类的水果,比如苹果、橙子、香蕉和葡萄。你喜欢苹果的味道,想找到其他味道类似的水果。但是你不想根据它们的颜色或大小来分类,而是决定根据它们的甜度或酸度来分组。

所以,你把所有甜的水果放在一起,比如苹果、葡萄和熟香蕉。你把酸的水果放在另一组,比如橙子和未熟香蕉。现在,当你想找到味道像苹果的水果时,你只需要看甜水果的组,因为它们更有可能有相似的味道。

但是,如果你正在寻找一种特殊的水果,比如味道像苹果一样甜,但也有像橙子一样的酸味呢?在你的分组中可能有点难找到,对吗?这时候你可以请教一个对不同水果了解很多的人,比如一个水果专家。他们可以根据你的独特口味要求推荐与之相匹配的水果,因为他们了解很多水果的味道。

在这种情况下,这个知识渊博的人就像一个“向量数据库”。他对不同水果有很多了解,可以帮你找到符合你特殊口味的水果,即使不是基于通常的颜色或形状。

类似地,向量数据库就像对计算机来说非常有帮助的这个专家。它被设计用于以一种特殊的方式记住关于事物的许多细节,比如食物。因此,如果你正在寻找一种口味类似于你喜欢的东西,或者一种具有你喜欢的口味组合的食物,这个向量数据库可以很快地为你找到合适的选择。就像计算机的味觉专家一样,他们了解各种口味,并可以根据你的需求提出很好的选择,就像那个了解很多水果的知识渊博的人一样。

向量数据库如何存储数据?

向量数据库通过使用向量嵌入来存储数据。向量嵌入是指在多维空间中将对象(如物品、文档或数据点)表示为向量的一种方式。每个对象都被分配一个向量,该向量捕捉了该对象的各种特征或特性。这些向量被设计成让相似的对象在向量空间中更接近,而不相似的对象则彼此距离较远。

将向量嵌入想象成描述对象重要方面的特殊代码。想象一下,你有不同的动物,你想以一种使相似动物具有相似代码的方式来表示它们。例如,猫和狗可能有非常接近的代码,因为它们共享了四条腿和毛皮等共同特征。另一方面,鱼和鸟类的代码会更远,反映出它们的差异。

在向量数据库中,这些嵌入用于存储和组织对象。当你想找到与给定查询相似的对象时,数据库会查看嵌入并计算查询嵌入与其他对象的嵌入之间的距离。这有助于数据库快速识别与查询最相似的对象。

例如,在音乐流媒体应用中,可以使用嵌入来将歌曲表示为向量,这些向量捕捉了音乐特征,如节奏、流派和使用的乐器。当您搜索与您喜欢的曲目相似的歌曲时,应用的向量数据库会比较嵌入以找到与您的偏好相匹配的歌曲。

向量嵌入是一种将复杂对象转化为数值向量的方法,它们捕捉了对象的特征,而向量数据库使用这些嵌入来根据它们在向量空间中的位置高效搜索和检索相似或相关的对象。

向量数据库是如何工作的?

图片来源:VoAGI

用户查询:

  • 您将问题或请求输入到ChatGPT应用程序中。

嵌入创建:

  • 应用程序将您的输入转换为一种称为向量嵌入的紧凑数值形式。
  • 此嵌入以数学表示的方式捕捉了您查询的本质。

数据库比较:

  • 将向量嵌入与向量数据库中存储的其他嵌入进行比较。
  • 相似性度量帮助根据内容识别最相关的嵌入。

输出生成:

  • 数据库生成一个响应,其中包含与您查询的含义密切匹配的嵌入。

用户响应:

  • 将包含与识别的嵌入相关信息的响应发送回您。

后续查询:

  • 当您进行后续查询时,嵌入模型会生成新的嵌入。
  • 这些新的嵌入用于在数据库中查找相似的嵌入,从而与原始内容相连接。

向量数据库如何确定哪些向量是相似的

向量数据库使用各种数学技术确定向量之间的相似性,其中最常见的方法之一是余弦相似度。

当您在Google上搜索“世界上最好的板球运动员”时,它会显示一系列顶级运动员,其中涉及几个步骤,其中余弦相似度是主要的。

搜索查询的向量表示与数据库中所有球员个人资料的向量表示进行余弦相似度比较。向量越相似,余弦相似度得分越高。

注意:嗯,这只是一个例子。值得注意的是,像Google这样的搜索引擎使用超越简单向量相似性的复杂算法。它们考虑各种因素,如用户位置、搜索历史、信息来源的权威性等,以提供最相关和个性化的搜索结果。

向量数据库的能力

向量数据库的重要性在于它们的能力和应用:

向量数据库擅长执行相似性搜索,可以检索与给定查询向量最相似的向量。这在各种应用中至关重要,如推荐系统(查找相似产品或内容)、图像和视频检索、人脸识别和信息检索。

  • 高维数据

传统关系数据库在处理高维数据时存在困难,因为随着维数增加,数据点之间的距离变得不那么有意义。向量数据库专门设计用于更高效地处理高维数据,适用于自然语言处理、计算机视觉和基因组学等应用。

  • 机器学习和人工智能

向量数据库经常用于存储机器学习模型生成的嵌入。这些嵌入捕捉了数据的基本特征,并可用于聚类、分类和异常检测等各种任务。

  • 实时应用

许多向量数据库针对实时或接近实时的查询进行了优化,适用于需要快速响应的应用,例如电子商务中的推荐系统、欺诈检测和监控物联网传感器数据。

  • 个性化和用户画像

向量数据库通过允许系统理解和预测用户偏好,实现个性化体验。这在流媒体服务、社交媒体和在线市场等平台中至关重要。

  • 空间和地理数据

向量数据库可以高效处理地理数据,例如点、线和多边形。这在地理信息系统(GIS)、基于位置的服务和导航应用等应用中至关重要。

  • 医疗保健和生命科学

在基因组学和分子生物学中,向量数据库用于存储和分析基因序列、蛋白质结构和其他分子数据。这有助于药物发现、疾病诊断和个性化医疗。

  • 数据融合和整合

向量数据库可以整合来自各种来源和类型的数据,实现更全面的分析和洞察。这在数据来自多种形式的情况下非常有价值,例如结合文本、图像和数值数据。

通过将文本文档表示为共同空间中的向量,向量数据库可以用于创建强大的多语言搜索引擎,实现跨语言的相似性搜索。

  • 图数据

向量数据库可以高效地表示和处理图数据,这在社交网络分析、推荐系统和欺诈检测中至关重要。

向量数据库在当今数据领域中的关键作用

由于现代应用中高维数据爆炸带来的挑战,向量数据库的需求日益增长。

随着各行各业越来越多地采用机器学习、人工智能和数据分析等技术,高效存储、搜索和分析复杂数据表示已成为至关重要的需求。向量数据库使企业能够利用相似性搜索、个性化推荐和内容检索的能力,推动增强用户体验和改善决策。

从电子商务和内容平台到医疗保健和自动驾驶车辆等应用,对向量数据库的需求源于其处理多样数据类型并实时提供准确结果的能力。随着数据的复杂性和规模不断增长,向量数据库提供的可扩展性、速度和准确性使其成为提取有意义洞察和开拓各个领域新机遇的关键工具。

SingleStore 作为向量数据库

利用 SingleStoreDB 强大的向量数据库功能,定制服务于基于人工智能的应用、聊天机器人、图像识别系统等。有了 SingleStoreDB,您不再需要维护专用的面向向量密集型工作负载的向量数据库。

SingleStoreDB 采用了与传统向量数据库方法不同的创新方法,将向量数据与各种数据类型一起存储在关系表中。这种创新融合使您能够轻松访问与向量数据相关的全面元数据和其他属性,同时利用 SQL 的强大查询功能。

SingleStoreDB 经过精心设计的可扩展框架,确保对不断增长的数据需求提供持久支持。告别限制,拥抱与数据需求同步增长的解决方案。

在 SingleStore 中使用 SQL 进行人脸匹配的示例

我们向这个表中加载了 16,784,377 行数据:

create table people(
  id bigint not null primary key,
  filename varchar(255),
  vector blob
);

每一行代表一个名人的图像,包含唯一的 ID 号码、存储图像的文件名和表示面部含义的 128 元素浮点向量。这个向量是使用 facenet 获得的,它是一个用于从人脸图像创建向量嵌入的预训练神经网络。

不用担心,您不需要理解人工智能来使用这种方法 – 您只需要使用别人预训练的神经网络或任何能够为对象提供摘要向量的工具。

现在,我们使用以下查询来查询这个表:

select vector
into @v
from people
where filename = "Emma_Thompson/Emma_Thompson_0001.jpg";

select filename, dot_product(vector, @v) as score
from people where score > 0.1
order by score desc
limit 5;

第一个查询为图像Emma_Thompson_0001.jpg获取了一个查询向量@v。第二个查询找到了前五个最接近的匹配项:

Emma_Thompson_0001.jpg与自身完全匹配,所以得分接近1。但有趣的是,下一个最接近的匹配项是Emma_Thompson_0002.jpg。以下是查询图像和最接近的匹配项:

此外,我们获得的搜索速度真的非常惊人。第二个查询在一台16 vcpu的机器上仅花费了0.005秒。而且它处理了全部的16M个向量。这是每秒超过33亿个向量匹配的速率。

向量数据库的重要性在于它们能够处理复杂的高维数据,并提供高效的查询和检索机制。随着数据在复杂性和规模上的持续增长,向量数据库在各行各业的应用中变得越来越重要。