主页
topics
矢量数据库
更新日期:2024 年 7 月 29 日
作者: Jim Holdsworth、Matthew Kosinski
矢量数据库提供了推动生成人工智能 (AI) 用例和应用程序所需的速度和性能,因此越来越受欢迎。根据 Gartner 的预测,到 2026 年,将有 30% 以上的企业采用矢量数据库,以便通过相关业务数据来构建自己的基础模型。1
与具有行和列的传统 关系数据库 不同,矢量数据库中的数据点由具有固定维数的矢量表示。由于矢量数据库使用高维矢量嵌入,因此能够更好地处理非结构化数据集。
时至今日,数据的本质已发生深刻变化。它不再局限于可轻松存储在传统数据库中的结构化信息。 非结构化数据(包括社交媒体帖子、图片、视频、音频剪辑等)同比增长 30% 至 60%。2
关系数据库擅长管理特定格式的结构化和半结构化数据集。将非结构化数据源加载到传统的关系数据库中以便存储、管理 人工智能 (AI) 的数据以及为其做好准备,此过程往往极其费力,尤其当其涉及相似性搜索等新兴生成式用例时。
传统搜索 通常使用离散标记或特征(例如关键字、标签或元数据)来表示数据。传统搜索依赖 精确 匹配来检索相关结果。例如,搜索“智能手机”会返回包含单词“智能手机”一词的结果。
与此相反,矢量搜索将数据表示为密集矢量,即大部分或所有元素都不为零的矢量。矢量在连续矢量空间中表示,该数学空间将数据表示为矢量。
矢量表示实现了相似性搜索。 例如,“智能手机”的矢量搜索也可能返回“手机”和“移动设备”的结果。
密集矢量的每个维度都对应着数据的 潜在特征 或方面。潜在特征是一种无法直接观察到但可以通过数学模型或算法从数据中推断出来的潜在特征或属性。
潜在特征可以采集数据中隐藏的模式和关系,从而在高维空间中将项目更有意义、更准确地表示为矢量。
使用此模型选择框架选择最合适的模型,同时平衡性能要求与成本、风险和部署需求。
矢量是张量的子集,在机器学习 (ML) 中,张量是 n 维空间中一组数字或一组数字的总称。张量是数据的数学记账工具。从最小的元素开始:
矢量数可以表示复杂的对象,例如,由 ML 模型生成的词语、图像、视频和音频。这种包含多种特征的高维矢量数据对于机器学习、自然语言处理 (NLP) 和其他 AI 任务至关重要。矢量数据的一些应用示例包括:
矢量嵌入是数据点的数字表示,可将各种类型的数据(文字、音频或图像等非数学数据)转换为 ML 模型可以处理的数字数组。
人工智能 (AI) 模型,从简单的线性回归算法到深度学习 中使用的复杂神经网络,都是通过数学逻辑运行的。
AI 模型使用的任何数据,包括非结构化数据,都需要用数字记录下来。矢量嵌入是一种将非结构化数据点转换为表达该数据原始含义的数字数组的方法。
下方是一个非常小的语料库(2 个词语)的词语嵌入简版示例,其中每个词语都表示为一个三维向量:
在此示例中,每个词语(猫) 都与一个唯一的矢量([0.2,-0.4,0.7])相关联。矢量中的值表示词语在连续的三维向量空间中的位置。
具有相似含义或上下文的单词应具有相似的向量表示。例如“cat”和“dog”的向量靠得很近,反映了它们的语义关系。
嵌入模型经过训练,可将数据点转换为矢量。矢量数据库存储这些嵌入模型的输出结果并编制索引。在数据库中,几乎任何数据类型的矢量都可以根据语义含义或特征分组或识别为对立面。
矢量嵌入是推荐、聊天机器人和生成式应用程序(如 ChatGPT)的核心元素。
以“汽车”和“车辆”这两个词为例。它们的意思相似,但拼写不同。为使 AI 应用程序能实现有效的语义搜索,“汽车”和“车辆”的矢量表示必须采集其语义相似之处。在机器学习方面,嵌入表示用于对此语义信息进行编码的高维矢量。
矢量数据库在 AI 和 ML 应用程序中具有三大功能:
在运行过程中,矢量数据库通过使用多种算法来进行 近似最近邻 (ANN) 搜索。然后,这些算法被汇集到一个 管道 中,以快速准确地检索和提供与被查询向量相邻的数据。
例如,ANN 搜索可以在电子商务目录中查找视觉上相似的产品。其他用途包括 异常检测、分类和语义搜索。由于数据集只需在模型中运行一次,因此结果可在几毫秒内返回。
矢量数据库可存储嵌入模型算法的输出,即矢量嵌入。它们还存储每个矢量的元数据,包括标题、描述和数据类型,可通过元数据过滤器进行查询。
通过摄取和存储这些嵌入,该数据库便可促进相似性搜索的快速检索,从而将用户的提示与相似的矢量嵌入进行匹配。
需要对矢量编制索引,以加快在高维数据空间内的搜索速度。矢量数据库可对矢量嵌入创建索引,以实现搜索功能。
矢量数据库使用 ML 算法为矢量编制索引。索引创建操作会将矢量映射到新的数据结构,从而实现更快的相似性搜索或距离搜索,例如不同向量之间的 最近邻 搜索。
可以使用分层导航小世界 (HNSW)、局部敏感散列 (LSH) 或乘积量化 (PQ) 等算法对矢量编制索引。
查询矢量 是搜索查询的矢量表示。 当用户查询或提示 AI 模型时,该模型会计算查询或提示的嵌入。然后,数据库会 计算查询矢量与索引中存储的矢量之间的距离,以返回相似的结果。
数据库可以通过各种算法(例如 最近邻搜索)来测量矢量之间的距离。测量还可以基于各种相似指标,例如余弦相似度。
数据库会根据相似度排序,返回与查询矢量最相似的向量或最近邻矢量。此类计算支持各种机器学习任务,例如推荐系统、语义搜索、图像识别和其他自然语言处理任务。
矢量数据库是支持基于 AI 的企业应用程序的一种流行方式,因为它们可以带来许多好处:
矢量数据库使用各种索引技术来加快搜索速度。矢量索引和距离计算算法(例如最近邻搜索)有助于优化在拥有数百万(甚至数十亿)数据点的大型数据集中搜索相关结果时的性能。
一个考虑因素是,矢量数据库提供的是 近似 结果。需要更高准确性的应用程序可能需要使用不同类型的数据库,但处理速度会变慢。
矢量数据库可存储和管理海量非结构化数据,通过增加节点进行水平扩展,在查询需求和数据量增加时保持稳定的性能。
由于矢量数据库可以加快数据检索速度,因此可以加快基础模型的训练。
矢量数据库通常提供内置功能,可轻松更新和插入新的非结构化数据。
建立矢量数据库是为了处理使用图像、视频或其他多维数据所增加的复杂性。
鉴于从语义搜索到对话式 AI 应用程序的多种用例,矢量数据库可以根据业务和 AI 需求进行定制。 组织可以从通用模型(例如 IBM Granite 系列模型、Meta 的 Llama-2 或 Google 的 Flan 模型)入手,然后在矢量数据库中提供自己的数据,以增强模型和 AI 应用程序的输出。
组织在选择矢量数据库功能时有多种选择。为了找到一个满足其数据和 AI 需求的解决方案,许多组织都在考虑:
有几种备选方案可供选择。
矢量数据库不应被视为独立功能,而应被视为更广泛的数据与 AI 生态系统的其中一部分。
很多这类工具可以提供应用程序接口、本机扩展,或可与数据库集成。 由于建立矢量数据库是为了使用企业数据来增强模型,因此组织还必须具备适当的数据管理和安全性,以帮助确保用于训练大型语言模型 (LLM) 的数据是可信的。
除了 API 之外,许多矢量数据库还使用编程语言特定的 软件开发工具包 (SDK) ,这些工具包可以与 API 相结合。使用软件开发工具包,开发人员通常会发现在其应用程序中使用数据更容易。
使用矢量存储和索引非常适合基于事实或基于事实查询的应用程序,例如从复杂文档中提取特定信息。
不过,要求提供主题摘要与矢量索引并不匹配。在这种情况下,LLM 会研究数据中有关该主题的所有可能的不同上下文。
更快的方法是使用另一种索引,例如列表索引而不是矢量索引,因为列表索引会立即获取每个列表中的第一个元素。
为了优化矢量数据库开发, LangChain 是一个用于开发使用 LLM 的应用程序的开源编排框架。
LangChain 的工具和应用程序接口可用于基于 Python 和 JavaScript 的库中,简化了构建聊天机器人和虚拟代理等 LLM 驱动型应用程序的过程。LangChain 为超过 25 种不同的嵌入方法和超过 50 种不同的矢量存储(包括云托管和本地存储)提供集成。
为了支持企业级 AI,数据湖仓一体可以与集成的矢量数据库搭配使用。组织可以统一、管理和准备用于其生成式 AI 应用程序的矢量化嵌入,这些嵌入可在其受信任且受管理的数据中进行大规模使用。这增强了他们 AI 工作量的相关性和准确性,包括聊天机器人、个性化推荐系统和图像相似性搜索应用。
矢量数据库的应用领域非常广泛,而且还在不断增长。其中部分关键用例包括:
检索增强生成 (RAG) 是一种 AI 框架,可使 大型语言模型 (LLM) 从外部知识库中检索事实。矢量数据库是支持 RAG 实施的关键。
企业越来越青睐在生成式 AI 工作流程中使用 RAG ,因为它能加快产品上市速度、提高推理效率和输出可靠性。 该框架尤其适用于客户服务、人力资源和人才管理等用例。
RAG 有助于确保模型与最新、最可靠的事实相联系,并确保用户可以访问模型的来源,以便其声明能够得到验证。将 LLM 锚定在可信数据中有助于减少模型幻觉。
RAG 使用高维矢量数据来丰富提示语的语义相关信息,以便通过基础模型进行上下文学习。 RAG 在推理阶段也需要有效的存储和检索,而该阶段所处理的数据量也是最大的。
矢量数据库擅长对这些高维矢量进行高效索引、存储和检索,从而提供推荐引擎和聊天机器人等应用所需的速度、精度和规模。
矢量数据库,尤其是用于实施 RAG 框架的矢量数据库,可以提高虚拟代理高效、准确地解析相关知识库的能力,从而有助于改善虚拟代理的交互。代理可以为用户查询提供实时的上下文答案,并提供源文件和页码以供参考。
例如,电子商务网站可以使用矢量来表示客户偏好和产品属性。这使它们能够根据矢量相似性向用户推荐与过去购买过的商品相似的商品,从而增强用户体验并提高留存率。
这种搜索技术用于在大型集合中发现类似的项目或数据点,通常以矢量表示。 矢量搜索 可以采集元素之间的语义关系,从而使机器学习模型和人工智能应用能够进行有效处理。
这些搜索可以采取多种形式。
IBM watsonx 是专为企业打造的 AI 和数据平台。在一个平台上轻松构建定制的 AI 应用程序、管理所有数据源并加速负责任的 AI 工作流程。
IBM Cloud Databases for Elasticsearch 将全文搜索引擎的灵活性与 JSON 文档数据库的索引功能相结合。 通过将集成的机器学习 (ML) 模型与专门的 ML 节点、数据类型和搜索算法相结合,IBM Cloud Databases for Elasticsearch 可随时为您的企业提供支持。
IBM Cloud Databases for PostgreSQL 是 PostgreSQL 数据库即服务产品,可让团队将更多时间用于构建高可用性、备份编排、时间点恢复 (PITR) 和轻松读取副本。
所有链接均为 ibm.com 外部链接
1 Gartner 创新洞察分析:矢量数据库, Gartner,2023 年 9 月 4 日。
2 2024 年存储战略路线图, Gartner ,2024 年 5 月 27 日。