什么是向量数据库?

向量数据库将信息片段存储为向量。向量数据库可将相关项目聚类在一起,进行相似性搜索并构建强大的 AI 模型。

学习目标

阅读本文后,您将能够:

  • 解释向量和向量数据库
  • 了解嵌入
  • 列出向量数据库的用途

复制文章链接

什么是向量数据库?

向量数据库是以数学形式存储的数据集合。向量数据库使机器学习模型更容易记住以前的输入,从而使机器学习能够用于支持搜索、推荐和生成文本等使用案例。可以根据相似性指标而不是精确匹配来识别数据,从而使计算机模型能够理解数据的上下文。

当顾客逛鞋店时,售货员可能会向顾客推荐与顾客喜欢的那双鞋相似的鞋子。同样,在电子商务商店中购物时,商店可能会在诸如“客户还购买了...”之类的标题下推荐类似的商品。向量数据库使机器学习模型能够识别相似的对象,就像售货员可以找到相似的鞋子一样,电子商务商店可以推荐相关的产品。(事实上,电子商务商店可能会使用此类机器学习模型来完成这项工作)。

总之,向量数据库使计算机程序能够进行比较、识别关系和理解上下文。这使得创建大型语言模型 (LLM) 等先进的人工智能 (AI) 程序成为可能。

嵌入——将向量空间中的文档聚类在一起

在这个简单的向量数据库中,右上方的文档很可能彼此相似。

什么是向量?

向量是一个数值数组,用于表示浮点在几个维度上的位置。

在更日常的语言中,向量是一串数字,如:{12, 13, 19, 8, 9}。这些数字表示空间中的某个位置,就像电子表格中的行和列编号表示某个单元格一样(例如:"B7")。

向量数据库如何工作?

向量数据库中的每个向量都对应一个对象或项目,无论是单词、图像、视频、电影、文档还是其他任何数据。这些向量很可能又长又复杂,表示每个物体在几十甚至上百个维度上的位置。

例如,电影的向量数据库可以根据电影的播放时间、类型、发行年份、家长指引等级、共同演员人数、共同观众人数等维度来定位电影。如果准确创建这些向量,那么相似的电影最终很可能会在向量数据库中聚类在一起。

如何使用向量数据库?

  • 相似度和语义搜索:向量数据库允许应用程序将相关项目连接在一起。聚类在一起的向量是相似的,很可能彼此相关。这不仅能帮助用户搜索相关信息(如图像搜索),还能帮助应用程序执行以下操作:
    • 推荐类似产品
    • 推荐歌曲、电影或节目
    • 推荐图像或视频
  • 机器学习和深度学习:将信息的相关项目连接起来的能力使得构建能够完成复杂认知任务的机器学习(和深度学习)模型成为可能。
  • 大型语言模型 (LLM) 和生成式 AI:LLM(如 ChatGPT 和 Bard 所基于的 LLM)依赖向量数据库来对文本进行上下文分析。通过将单词、句子和观点相互关联,LLM 可以理解人类的自然语言,甚至可以生成文本。

什么是嵌入?

嵌入是由神经网络生成的向量。深度学习模型的典型向量数据库由嵌入组成。一旦对神经网络进行了适当的微调,它就能自行生成嵌入,因此无需手动创建。如上所述,这些嵌入可以用于相似性搜索、上下文分析、生成式 AI 等。

使用向量数据库有哪些优势?

在没有向量数据库的情况下,单独查询机器学习模型速度又慢,又不符合成本效益。机器学习模型只能记住它们训练过的内容,记不住任何其他内容。每次都必须为它们提供上下文(许多简单的聊天机器人就是这样工作的)。

每次将查询的上下文传递给模型的速度都很慢,因为数据量可能很大;而且成本很高,因为数据必须四处移动,而且必须反复消耗计算能力来让模型解析相同的数据。另外,大多数机器学习 API 实际上在一次接受多少数据方面可能会受到限制。

这就是向量数据库的用武之地:数据集只需通过模型一次(或者定期通过,当数据集发生变化时),该数据的模型嵌入就会存储在向量数据库中。

这样可以节省大量的处理时间。它使构建围绕语义搜索、分类和异常检测的面向用户的应用程序成为可能,因为结果会在几十毫秒内返回,无需等待模型处理整个数据集。

对于查询,开发人员会要求机器学习模型仅提供该查询的表示(嵌入)。然后,可以将嵌入传递给向量数据库,后者就能返回类似的嵌入——这些嵌入已经在模型中运行过了。然后,可以将这些嵌入映射回其原始内容:无论是页面的 URL、图像的链接还是产品 SKU。

总而言之:向量数据库可以大规模运行,运行速度快,而且比不使用向量数据库查询机器学习模型更具成本效益。

Cloudflare 是否提供使用向量数据库的功能?

Vectorize 是 Cloudflare 提供的全球分布式向量数据库。在 Cloudflare Workers 上构建的应用程序可使用 Vectorize 查询存储在 Workers KV 中的文档、存储在 R2 中的图像或存储在 D1 中的用户配置文件。正如 Workers 允许开发人员在不启动任何后端基础设施的情况下构建应用程序一样,Vectorize 允许开发人员在不构建自己的向量数据库基础设施的情况下在其应用程序中构建 AI 功能。Cloudflare 还提供 Workers AI,用于创建嵌入。

了解如何在 Cloudflare 上构建 AI 驱动的应用程序