在这一革命的核心是向量数据库的概念,这是一项开创性的发展,正在重新塑造我们处理复杂数据的方式。与传统的关系型数据库不同,这些数据库独具处理和处理高维向量数据的能力 – 这是许多人工智能和机器学习应用所固有的。随着我们深入研究先进人工智能时代,向量数据库正成为关键工具,提供了处理生成式人工智能模型生成的庞大而复杂数据集时无与伦比的效率和准确性。
本文旨在探讨向量数据库在生成式人工智能世界中的关键作用,重点介绍其功能、工作原理、用例和实际操作教程。
什么是向量数据库?
向量数据库是一种专门设计用于存储、索引和检索具有多个维度的数据点的数据库。这些数据点通常被称为向量。与处理以表格形式组织的数据(如数字和字符串)的数据库不同,向量数据库专门设计用于管理表示多维向量空间中的数据。这使得它们非常适合人工智能和机器学习应用,其中数据通常采用像图像嵌入、文本嵌入或其他类型的特征向量这样的向量形式。
这些数据库利用索引和搜索算法进行相似性搜索,使其能够在数据集中快速识别最相似的向量。这种能力对于推荐系统、图像和语音识别以及自然语言处理等任务非常重要,因为高效地理解和处理高维数据起着至关重要的作用。因此,向量数据库代表了一种数据库技术的进步,旨在满足严重依赖大量数据的人工智能应用的要求。
向量嵌入
当我们谈论向量数据库时,我们应该明确向量嵌入是什么 – 即数据最终如何存储在向量数据库中。向量嵌入作为一种数值代码,包含对象的关键特性,例如音乐流媒体应用中的歌曲。通过分析和提取关键特征(如节奏和流派),每首歌曲都通过嵌入模型转换为向量嵌入。
这个过程确保具有相似属性的歌曲具有类似的向量代码。向量数据库存储这些嵌入,并在查询时将这些向量进行比较,以找到并推荐具有最相似特征的歌曲 – 为用户提供高效和相关的搜索体验。
向量数据库如何工作?
当用户发起查询时,各种类型的原始数据,包括图像、文档、视频和音频。这其中的数据可以是非结构化或结构化的,首先通过嵌入模型进行处理。这个模型通常是一个复杂的神经网络,将数据转化为高维数值向量,并将数据的特征有效地编码为向量嵌入 – 然后将其存储到像SingleStoreDB这样的向量数据库中。
当需要检索时,向量数据库执行操作(如相似性搜索),以找到并检索与查询最相似的向量,高效处理复杂查询,并向用户提供相关结果。整个过程使得在需要高速搜索和检索功能的应用中,能够快速、准确地管理各种类型的庞大数据。
向量数据库与传统数据库有何不同?
让我们探索向量数据库与传统数据库之间的区别。
向量数据库在数据组织和检索的方法上与传统数据库存在显著差异。传统数据库的结构适用于处理离散的标量数据类型,如数字和字符串,并将其组织为行和列。
这种结构对于事务性数据来说是理想的,但对于通常在人工智能和机器学习中使用的复杂、高维数据来说不太高效。相比之下,向量数据库设计用于存储和管理向量数据 – 代表多维空间中的点的数字数组。
这使它们天生适用于涉及相似性搜索的任务,其中的目标是在高维空间中找到最接近的数据点,这是图像和语音识别、推荐系统以及自然语言处理等人工智能应用中常见的需求。通过利用优化了高维向量空间的索引和搜索算法,向量数据库提供了一种更高效和有效的处理越来越普遍的数据的方式,这种数据在先进人工智能和机器学习时代越来越常见。
向量数据库的使用案例
向量数据库在企业的推荐系统中发挥着重要作用。例如,它们可以根据用户的浏览或购买行为向用户推荐物品。它们在欺诈检测系统中也非常出色,在此系统中,它们可以通过将交易嵌入与已知的欺诈活动模式进行比较,检测异常模式,从而实现实时欺诈检测。人脸识别是另一个使用案例,向量数据库存储人脸特征嵌入,有助于安全和监视。
它们甚至可以通过预先确定或不同的响应来帮助组织进行客户支持,并回答类似问题。市场研究是矢量数据库的另一个擅长领域,它通过分析客户反馈和社交媒体帖子,将它们转化为文本嵌入进行情感分析和趋势发现,从而获得更多的业务洞察。
SingleStoreDB作为矢量数据库
SingleStoreDB的强大矢量数据库功能是为AI驱动的应用程序、聊天机器人、图像识别系统等量身定制的。通过使用SingleStoreDB,为您的矢量密集型工作负载维护专用矢量数据库的必要性变得过时。
与传统的矢量数据库方法不同,SingleStoreDB采用了一种创新的方法,将矢量数据与不同的数据类型一起存储于关系表中。这种创新的融合方式使您能够轻松访问与您的矢量数据相关的全面元数据和附加属性,同时利用SQL强大的查询能力。
SingleStoreDB经过精心设计,具有可扩展的框架,确保对不断增长的数据需求提供持续支持。告别限制,拥抱与数据需求同步增长的解决方案。
使用SingleStoreDB进行矢量数据库教程
先决条件
- 注册免费的SingleStoreDB Cloud试用账号。我们将使用SingleStore作为我们的矢量数据库。
- 使用Postman账号创建嵌入
- 使用OpenAI账号获取我们的OpenAI API密钥
登录到您的OpenAI账号后,转到此处的API选项卡。
接下来,转到嵌入选项卡。
我们将从嵌入的API请求开始。为此,我们需要像Postman这样的工具。您可以注册并在Postman账号中创建一个工作区。
现在,获取我们的API URL`https://api.openai.com/v1/embeddings`并在Postman的URL部分粘贴它,使用您的OpenAI API密钥进行授权。
是时候创建我们的第一个嵌入了。我们只需要一个模型和输入参数,如OpenAI文档页面所示。
对于模型,我们将使用“text-embedding-ada-002”和任意文本作为输入。
让我们开始吧。前往Postman仪表板并创建一个‘body’请求。在body下选择‘raw’,然后选择‘JSON’来传递一个JSON对象。
提及模型和输入。
向OpenAI发送post请求。您应该看到一个类似于这里所示的响应。
你所看到的数字是嵌入的向量。要存储这些向量嵌入,您需要一个强大的数据库,这就是SingleStoreDB所擅长的地方。让我们创建一个免费的SingleStoreDB Cloud账号。
接下来,创建一个工作区,如此处所示。
您可以看到您创建的工作区以及附加的样本/默认数据库。
让我们创建一个数据库。
新创建的数据库可以在仪表板中看到。
您可以进入该数据库查看内容。在这种情况下,因为我们还没有输入任何数据,所以您看不到任何内容。
让我们在数据库中创建一些表。前往显示的‘SQL Editor’。您可以运行一些简单的SQL命令来创建表。
确保在‘选择数据库’选项卡下选择数据库。选择我们前面创建的数据库。
编写一个简单的SQL查询来创建表和数据类型。
现在,让我们将向量数据插入到这个数据库中。这就是我们要将从Postman收到的嵌入数据输入的地方。返回到SQL编辑器,编写以下SQL查询。
我们将使用我们从Postman接收到的’Hello World’输入的数值作为参考。将我们从Postman接收到的大量数字数据插入到JSON_ARRAY_PACK中。
从Postman中复制这些数字。将这个大量数字数据粘贴到你的数值中,并运行该命令。
你将看到结果被输入到我们的数据库中。
就是这样!这就是你可以使用Postman从不同的输入创建不同的嵌入,并将生成的向量嵌入添加到你新创建的数据库中的方法。
使用之前的方法将它们存储到我们的数据库中。添加你自己的输入和内容,并将它们转换为向量。正如你在这里看到的,我们添加了不同的输入,并将生成的向量嵌入存储到我们的数据库中。
现在,让我们做一些实验,通过搜索一些特定的词汇并从我们的数据库中检索相关数据。让我们回到Postman仪表板,并为术语’OpenAI’创建一个嵌入。
接下来,我们将在数据库中执行一次搜索,以对现有的嵌入进行比对。这应该会给我们提供结果,最相似的列表将位于顶部。让我们转到SQL编辑器中,并按照所示运行这个查询。
将嵌入(大量数字数据)粘贴到JSON_ARRAY_PACK中,并运行该命令。
在上面的图片中,你可以看到关键词’OpenAI’的相似度分数和排名。同样,你可以看到任何关键词的相似度分数。这样,SingleStoreDB可以作为你的业务高效的向量数据库使用。