代码改变世界

向量数据库

2024-08-16 14:37  abce  阅读(130)  评论(0编辑  收藏  举报

最近,一种鲜为人知的数据类型--向量--作为生成式人工智能的推动力,成为了人们关注的焦点。但是,向量--以及用于存储和分析向量的数据库--已经在后台工作了很多年。它们被用于城市规划、交通物流和环境分析中的地理空间制图和分析。最近,向量还被用于零售产品以及音乐和视频流网站的推荐引擎。

 

生成式人工智能以这些用例为基础,为使用向量和向量数据库的创新打开了大门。

什么是向量?

向量是一组简单的数字,表示一个对象的特征--无论这个对象是一个单词、一个句子、一份文档、一幅图像,还是一个视频或音频文件。之所以需要向量,是因为计算机很难比较或搜索这类非结构化内容。而向量的比较和搜索则要容易得多,而且是基于广为人知的数学知识。

 

向量与作为向量基础的数据对象一起存储在数据库中。在数学上相互接近的向量往往描述具有相似特征的对象,因此可以快速比较或搜索它们,并返回相似的对象。你也可以形成一个只确定某些特征的查询向量。搜索将返回与查询向量中指定的特征相似的对象。

 

虽然向量曾经是手工分配的,但现在几乎完全是通过使用机器学习模型和神经网络来创建的,它们将非结构化数据的特征编码成一组数字。这些模型被称为向量嵌入模型。它们可以生成包含数十、数百甚至数千个数字的向量,以表示每个对象的细粒度属性集。

 

向量中的单个数字对人类没有意义,因为它们是神经网络中数学运算的结果。但使用它们可以大大减少数据库查找彼此相似的条目所需的时间。这种操作通常被称为语义搜索,如果没有向量,往往是不可能完成的,或者成本高昂。

 

在商业领域,向量嵌入可应用于操作信息,如产品描述、客户服务记录或销售交易。这样,由大型语言模型(LLM)驱动的应用程序就可以对公司的信息库进行语义搜索。一项名为"检索增强生成"(RAG)的配套技术可让 LLM 参考向量搜索最新的本地信息来回答提示。RAG 可以帮助企业从常用的通用 LLM 中获得针对公司的响应,而不会影响其既有数据架构的数据安全性和性能。这是因为一旦提示得到满足,LLM 就不会保留通过 RAG 提供的信息。

 

什么是向量数据库?

向量数据库是指任何能够本地存储和管理向量嵌入并处理其描述的非结构化数据(如文档、图像、视频或音频)的数据库。

 

由于向量搜索对生成式人工智能的重要性,科技行业催生了许多专门的独立向量数据库,公司可以将其添加到自己的数据基础设施中。与此同时,开源的 MySQL 数据库和商用的 Oracle 数据库等老牌数据库也将向量作为一种本地数据类型与许多其他数据类型结合在一起。其理由是,如果在一个数据库中同时提供两种数据类型,那么对业务数据和语义数据的搜索就会更快、更精确。这种方法还可以避免在业务主数据库之外使用单独的专门向量数据库时所带来的数据一致性问题。

向量索引与向量数据库

向量索引包含许多可以快速搜索的向量。向量数据库包含向量索引及其描述的数据对象,并协调向量搜索过程。

主要区别

向量索引与向量数据库的主要区别在于,向量索引存储的是文本、图像或音频文件等非结构化数据的属性信息。这些信息由一组称为向量的数字表示。向量索引保存这些数据,并以"索引"的方式帮助数据库快速识别和匹配对象。

 

向量数据库包含这些索引及其描述的对象。不过,数据库安排向量索引和数据对象的方式各不相同。支持向量的数据库,如Oracle等将数据对象的存储与数据和向量的搜索方式分开。这样,数据库就能将 SQL 对元数据和最新业务数据的成熟查询能力与向量搜索的速度和上下文相关性结合起来。例如,这种方法意味着对相关零售产品的向量搜索也能提供最新的价格和可用性。

 

·向量数据库使用一种称为向量嵌入的数据类型有效地存储和处理对象。

·向量嵌入描述了对象的特征,支持向量的数据库可以存储这些向量并创建便于快速搜索的索引。

·向量和支持向量的数据库并不是新事物;它们早已被用于专门的用例,如制图和数据分析。

·最近,向量嵌入和向量数据库已被推荐引擎和生成式人工智能中的机器学习算法用于理解主题和查找对象之间的相似性,以及生成文本、图像、音频和视频输出。

·目前,企业正在将向量数据库和生成式人工智能与检索增强生成技术相结合,通过共享其文档和通信仓库中的精选条目,从生成式人工智能中获取更多价值。其结果是在考虑到 RAG 提供的额外数据的情况下迅速做出响应。

 

向量数据库详解

公司正在整理 LLM 用来生成输出结果的数据,而不是花费成本和精力去微调生成式人工智能模型。它们正在使用向量数据库,其中包含来自企业信息仓库的最新信息。这种架构方法被称为"检索增强生成"(Retrieval-augmented generation),它可以让在大量通用数据基础上训练出来的 LLM 通过使用向量数据库中的本地数据来增强其响应能力。

 

例如,如果一个由 LLM 驱动的聊天机器人可以访问零售商的客户记录和电子邮件通信,而不是通用信息,那么它就可以对诸如"我的订单发货了吗?"之类的询问提供更有用、更个性化的回复。

 

RAG 还可以通过列举向量数据库中的哪些文档为其输出提供了信息,从而提高生成式人工智能模型的可靠性和可信度。

 

向量数据库为何重要?

毫不奇怪,为存储和分析向量而优化的数据库的使用正在上升。向量数据库曾经主要用于制图和数据分析,现在已成为零售商、音乐和视频流媒体提供商最受欢迎的常用的推荐引擎的重要基石技术。现在,向量数据库又有了新的惊人用途:将大量非结构化数据存储在特殊索引中,以便为生成式人工智能模型的输出提供信息。

 

一个日益增长的趋势是,MySQL 和 Oracle 数据库等成熟数据库将向量数据作为一种本地数据类型,与企业的其他数据类型(如 JSON、图形、空间和关系型)并列。这种融合使生成式人工智能操作无需将数据移至单独的数据库,既简化了流程,又将有价值的数据留在了可信的存储库中。

 

生成式人工智能用例的增长意味着市场上出现了许多新的向量数据库,此外,已有的 NoSQL 和关系型数据库也增加了向量数据类型管理功能。

 

向量数据库如何工作?

向量数据库以向量的形式存储和处理数据,向量是多维空间中对象特征的数学表示。这使得图像、音频、视频和传感器数据等复杂数据类型可以高效地存储和查询,从而使向量成为推荐系统、自然语言处理和图像识别等用例的理想选择。

 

操作分为以下几个步骤:

·向量化:可以创建向量来描述非结构化数据的内容或特征。这种非结构化数据库的形式可以是存储在数据库表中的文本,也可以是存储在文件系统中的文档。

·索引:向量数据库使用向量索引以分层方式组织向量,从而实现高效搜索和检索。

·查询:为了查询向量数据,向量数据库使用查询向量执行向量距离运算。向量在数学上越接近,向量所代表的对象就越相似。通常,这一过程会返回一个小的结果集,如五个最相似的条目。

·后期处理:向量数据库检索出查询向量的近邻后,可以选择对结果集的行重新排序。与向量查询相比,重新排序是一项昂贵的操作,但它可以为现有的向量查询结果提供更好的排序。

 

向量数据库的类型

向量数据库可按存储结构(如列式数据库)或实现方式(如内存数据库)分为多种类型。每种类型都有各自的优势;选择哪种类型应根据具体要求和用例而定。

列式数据库

列式数据库将数据存储在列中,并在磁盘上进行分组。这种安排加快了数据分析的速度,因为分析通常涉及过滤和组合表列中的数据。数据库还可以以行格式存储记录,这对更新记录中单个条目的事务很有帮助。不过,对于数据分析来说,列式数据库可以让分析人员快速扫描数千或数百万条记录中的任何一列。

文档存储

文档存储数据库或面向文档的数据库是一种程序和数据存储系统,用于管理、检索和存储面向文档的信息。文档数据库以灵活、类似 JSON 的文档形式存储数据,适用于各种动态数据结构。它们与关系数据库不同,关系数据库使用表以固定模式组织数据。

图形数据库

图形分析是以图形格式分析数据的过程,将数据点作为节点,将关系作为边。通过这种方式查看数据,可以帮助发现之前并不明显的连接和关系。图形分析需要一个能支持图形格式的数据库。这可以是专用的图形数据库,也可以是支持多种数据模型(包括图形)的融合数据库。

内存数据库

内存数据库在应用程序的内存而不是存储磁盘上存储和处理数据。这种结构通常与列式存储功能和向量化查询计划相匹配,以加速分析查询。这种类型的数据存储适合支持全球电信和需要根据实时数据做出决策的企业的快速操作。

空间数据库

空间数据库存储和管理空间数据,这些数据代表了空间中物体的物理位置和几何属性信息。它们通过索引技术和查询操作来实现这一目的。空间数据库可用于在线制图和分析以及航运物流操作。

时间序列数据库

时间序列数据库用于有效地存储和分析有时间戳的数据,其中每个数据点都与特定的时间戳或时间间隔相关联。这些数据库通常用于依赖日志分析的 IT 监控系统和金融领域。

用于大型语言模型的向量数据库

向量数据库可让商业或开源大型语言模型访问本地组织或企业提供的最新信息,从而增强这些模型的功能。这有助于使大型语言模型的输出对与该组织相关的人员更加相关和个性化。

 

谁在使用向量数据库?

向量数据库适用于处理大量空间和几何数据的各种应用和组织,例如零售和物流行业以及自动驾驶汽车的驾驶系统。向量数据库可以高效地处理复杂的查询和计算,因此对需要实时位置数据分析和可视化的企业特别有用。

现在,探索高级人工智能和机器学习的公司也在采用向量数据库。例如,生成式人工智能模型依赖于向量数据库,通过使用本地最新数据存储来改进其输出。

其他用例如下

·金融公司:使用向量的方式有几种。例如,在投资组合分析中,向量可用来表示客户投资组合的各个方面。它们还可用于跟踪账户在一段时间内的表现。

·医疗:研究人员使用向量数据库来支持他们的研究和临床试验。它们可以存储和分析与患者人口统计、地点和治疗效果相关的数据,使研究人员能够评估许多不同因素对治疗效果的影响。

·在线零售:使用向量数据库来参考过去的购买和浏览习惯,并推荐顾客可能会喜欢的产品。

·航运物流公司:使用向量数据库来存储位置和距离信息,以便准确绘制地图和跟踪运动中的物体。

·流媒体服务:使用向量来运行推荐引擎,使其能够根据类型、主演、发布日期和评论等多种因素进行推荐。

 

如何使用向量数据库?

向量数据库的使用用例取决于向量数据库的组织和应用,具有多样性。除了实时数据分析、金融系统和推荐引擎外,向量数据库还经过优化,可以处理图像识别和自然语言处理等任务通常需要的复杂数据结构。

通过高效地存储和处理数据,向量数据库使公司能够利用复杂的数据结构实现广泛的应用,包括以下应用:

·推荐系统:向量嵌入用于快速查找购物者可能感兴趣的类似产品或娱乐选项。

·搜索引擎:搜索引擎使用向量数据库为查询和文档编制向量嵌入索引,从而快速找到相似的搜索结果或相似的文档。

·个性化:这些系统使用人口统计信息和过去的选择作为向量搜索的指南,准确定位可能与特定用户匹配的产品或服务。

·异常检测:向量数据库可以高效搜索异常向量,即使是在非常庞大的数据集中。这可以帮助安全团队发现企图入侵的行为,帮助信用卡公司阻止欺诈交易。

·基因组学和生物信息学:由于向量和向量数据库擅长模式匹配和异常检测,它们可以帮助研究人员匹配基因序列,以比较大量基因数据。这有助于疾病预测和药物发现等领域。

·医疗保健和医学研究:医疗保健提供商正在使用向量数据库来存储和管理与病人护理相关的信息,如病历、人口统计数据、化验结果,甚至基因信息。在临床试验中,可以分析与试验场地、患者人口统计、治疗结果和不良事件相关的地理空间数据,以确定治疗效果。

·图像和视频检索:图像和视频检索操作采用向量数据库进行相似性和语义搜索,可在众多选项中快速定位图像或视频。

 

向量数据库的优势

与传统数据库相比,向量数据库具有许多优势,如更快的处理速度和数据检索速度,以及更好的可扩展性。这使它们成为需要实时处理和分析的应用和行业以及新兴生成式人工智能用例的理想选择。

 

优势:

·成本效益高:向量数据库,尤其是 PostGIS、带有向量扩展的 MySQL 或带有本地向量存储的多模型数据库等开源选项,可为地理空间分析和生成式人工智能模型提供经济高效的解决方案。

·高效存储:向量数据库中的空间索引技术可以高效地存储和组织向量化数据。

·快速检索:向量数据库的索引可根据对象的多种属性快速检索数据。它们通过记录关系和邻近性,并利用这些关系和邻近性快速执行搜索。

·与机器学习集成:向量数据库旨在与机器学习框架和算法集成,从而推动预测模型、异常检测、聚类和其他基于机器学习的分析的发展。

·个性化:向量数据库使零售、音乐流媒体甚至医疗保健领域的企业能够量身定制服务,快速找到符合个人喜好和需求的产品。

·实时分析:向量数据库可支持内存操作,以实现快速的查询响应时间和高效的数据处理。这使它们能够为日常决策执行实时分析。

·降低开发复杂性:向量数据库可以提供API、库和查询语言,从而抽象出数据管理和应用程序开发的复杂性。这可以大大减少应用程序开发过程所需的时间,从而降低成本。

·可扩展性:向量数据库可以有效地管理和处理数百万甚至数十亿的向量对象,如果有合适的基础设施,还可以快速增长以满足需求。

·多功能性:向量数据库支持各种非结构化数据,如录音、文本文档和图像。这种多功能性使其能够适应多种用例和应用。

 

Oracle 如何满足你的矢量需求?

无论你是使用生成式人工智能还是使用矢量进行任何其他操作,Oracle 几乎都能提供帮助。

 

Oracle 的 MySQL HeatWave 数据库服务可原生处理矢量,以支持矢量搜索和其他用例。例如,可以将其与Oracle云基础架构(OCI)中的检索增强生成(RAG)结合使用,为你的专有文档提供生成式人工智能界面,使你的人工智能成为企业运营数据方面的专家。

 

此外,Oracle 数据库作为全球最流行的企业数据库,为向量和你的所有数据类型提供了单一数据平台。通过在单一数据库中结合 SQL、JSON 文档、图形、地理空间数据、文本和矢量,你将能够在应用程序中快速构建新功能。