什么是向量数据库?

0 股票
0
0
0
0

介绍

想象一下,一个数据库不仅能存储数据,还能理解数据。近年来,人工智能应用几乎彻底改变了所有行业,并改变了计算的未来。.

向量数据库改变了我们管理非结构化数据的方式,使我们能够以一种能够捕捉关系、相似性和上下文的方式来存储知识。与主要依赖于存储在表格中的结构化数据并专注于精确匹配的传统数据库不同,向量数据库允许我们以机器学习模型可以理解和比较的格式存储非结构化数据,例如图像、文本和音频。.

向量数据库并非依赖精确匹配,而是能够找到“最接近”的匹配项,从而高效检索替代项或语义相似的项。在人工智能无处不在的今天,向量数据库已成为大型语言模型和生成及处理词嵌入的机器学习模型等应用不可或缺的工具。.

那么,什么是嵌入?我们将在本文中简要介绍。.
无论是用于推荐系统还是为对话式人工智能提供支持,向量数据库都已成为一种强大的数据存储解决方案,使我们能够以新颖而令人兴奋的方式访问数据并与之交互。.

现在我们来看看最常用的数据库有哪些:

  • SQL:用于存储结构化数据,并使用表来存储符合预定义模式的数据。最常见的SQL数据库包括MySQL、Oracle数据库和PostgreSQL。.
  • NoSQL:它是一种非常灵活且无模式的数据库。它也以处理非结构化或半结构化数据而闻名。它非常适合许多实时 Web 应用程序和大数据应用。最常见的 NoSQL 数据库包括 MongoDB 和 Cassandra。.
  • 图:随后出现了图,它将数据存储为节点和边,旨在管理互连数据。例如:Neo4j、ArangoDB。.
  • 向量数据库:用于存储和查询高维向量的数据库,支持人工智能/机器学习任务中的相似性搜索和数据增强。最常见的向量数据库包括 Pinecone、Weaviate 和 Chroma。.
先决条件
  • 相似性度量知识:理解余弦相似度、欧氏距离或点积等度量方法,以便比较向量数据。.
  • 机器学习和人工智能基本概念:机器学习模型和应用的知识,特别是那些生成嵌入的模型和应用(例如自然语言处理、计算机视觉)。.
  • 熟悉数据库概念:具备数据库的一般知识,包括索引、查询和数据存储的原理。.
  • 编程技能:精通 Python 或类似语言,这些语言常用于机器学习库和向量数据库。.

我们为什么要使用向量数据库?它们有何不同?

假设我们将数据存储在传统的 SQL 数据库中,其中每个数据点都被转换成一个嵌入向量并存储。当构建查询时,它也会被转换成一个嵌入向量,然后我们尝试通过余弦相似度将查询嵌入向量与存储的嵌入向量进行比较,来找到最相关的数据点。.

然而,由于以下几个原因,这种方法可能会失效:

  • 高维度:词嵌入通常是高维度的。这会导致查询速度变慢,因为每次比较可能都需要对所有存储的词嵌入进行完整扫描搜索。.
  • 可扩展性问题:计算数百万个嵌入之间的余弦相似度,对于大型数据集而言,计算成本将变得极其高昂。传统的 SQL 数据库并未针对此任务进行优化,因此难以实现实时检索。.

因此,传统数据库可能难以高效地进行大规模搜索。此外,每天产生的大量数据都是非结构化的,无法存储在传统数据库中。.

为了解决这个问题,我们使用向量数据库。向量数据库中引入了索引的概念,它能够高效地搜索高维数据的相似性。通过组织向量嵌入,索引在加速查询方面发挥着重要作用,即使在大型数据集中,也能使数据库快速检索与查询向量相似的向量。向量索引缩小了搜索空间,并使其能够扩展到数百万甚至数十亿个向量。这使得即使在大型数据集中也能实现快速的查询响应。.

在传统数据库中,我们搜索与查询匹配的行。而在向量数据库中,我们使用相似性度量来找到与查询最相似的向量。.

向量数据库结合了多种近似最近邻 (ANN) 搜索算法,通过哈希、量化或基于图的方法优化搜索。这些算法协同工作,形成一个流水线,以提供快速准确的结果。由于向量数据库提供的是近似匹配,因此精度和速度之间存在权衡——更高的精度可能会降低查询速度。.

向量表示的基础知识

什么是向量?

向量可以被视为存储在数据库中的数字数组。任何类型的数据,例如图像、文本、PDF 文件和音频,都可以转换为数值并以数组的形式存储在向量数据库中。这种数据的数值表示方式使得相似性搜索成为可能。.

在理解向量之前,让我们先来理解语义搜索和嵌入。.

什么是语义搜索?

语义搜索是一种查找词语含义和上下文而非匹配精确短语的方法。它不专注于关键词,而是尝试理解词语的含义。例如,单词“python”。在传统的搜索中,“python”可能同时返回Python编程和Python蛇的结果,因为它只识别单词本身。而语义搜索则会查找上下文。如果最近的搜索内容是«编程语言»或«机器学习»,它很可能会显示Python编程的结果。但如果搜索内容是«奇特的动物»或«爬行动物»,它就会假定python是蛇,并相应地调整搜索结果。.

通过识别上下文,语义搜索有助于根据实际意图找出最相关的信息。.

什么是嵌入?

词嵌入是一种将单词表示为数值向量的方法(目前,我们可以将向量视为数字列表;例如,单词«cat»可能变成[.1,.8,.75,.85])。在高维空间中,计算机可以快速处理单词的这种数值表示。.

词语具有不同的含义和相互关系。例如,在词嵌入中,“国王”和“王后”这两个词与“国王”和“汽车”这两个词具有相似的向量。.

词嵌入可以根据词语在句子中的用法来捕捉其上下文信息。例如,“bank”可以指金融机构,也可以指河岸,词嵌入可以帮助我们根据周围的词语来识别这些含义。词嵌入是一种更智能的方式,可以帮助计算机理解词语、含义和关系。.

理解词嵌入的一种方法是,将单词的不同特征或特性映射出来,然后为每个特征赋予一个值。这样就得到了一系列数字,称为向量。有多种技术可以用来创建词嵌入。因此,向量嵌入是一种用数字表示句子或文档的方法,这些数字可以描绘词义和词之间的关系。向量嵌入允许将这些词表示为空间中的点,相似的词彼此靠近。.

这些向量嵌入允许进行加法和减法等数学运算,从而可以用来捕捉关系。例如,众所周知的向量运算“国王 - 男人 + 女人”可以得到一个接近“女王”的向量。.

向量空间中的相似性准则

现在,为了衡量每个向量的相似性,需要使用数学工具来量化相似性或差异性。以下列出其中一些工具:

  • 余弦相似度:余弦值衡量两个向量之间的角度,取值范围从 -1 到 1。其中 -1 表示完全相反,1 表示向量相同,0 表示正交或不相似。.
  • 欧氏距离:衡量向量空间中两点之间的直线距离。数值越小,表示相似度越高。.
  • 曼哈顿距离(L1范数):通过将两点对应分量的绝对差值相加来测量两点之间的距离。.
  • 闵可夫斯基距离:欧氏距离和曼哈顿距离的推广。.

这些是机器学习算法中最常用的距离或相似性度量。.

热门矢量图库

以下是一些目前广泛使用的最流行的矢量图库:

  • Pinecone:一个完全托管的向量数据库,以其易用性、可扩展性和快速的近似最近邻(ANN)搜索而闻名。Pinecone 因其与机器学习工作流程的集成而著称,尤其是在语义搜索和推荐系统中。.
  • FAISS(Facebook AI 相似性搜索):由 Meta(前身为 Facebook)开发,FAISS 是一个高度优化的相似性搜索和密集向量聚类库。它是开源的,高效,广泛应用于学术界和工业界的研究,尤其适用于大规模相似性搜索。.
  • Weaviate:一个开源的云原生向量数据库,支持向量搜索和混合搜索功能。Weaviate 因其与 Hugging Face、OpenAI 和 Cohere 等模型的集成而著称,使其成为语义搜索和自然语言处理应用的强大选择。.
  • Milvus:一个开源、高度可扩展的向量数据库,专为大规模人工智能应用而优化。Milvus 支持多种索引方法,并拥有广泛的集成生态系统,因此在实时推荐系统和计算机视觉任务中广受欢迎。.
  • Qdrant:一个高性能向量数据库,注重用户友好性,提供实时索引和分布式支持等功能。它专为处理高维数据而设计,因此适用于推荐引擎、个性化和自然语言处理任务。.
  • Chroma:Chroma 是一款开源软件,专为语言学习模型 (LLM) 应用而设计,它为 LLM 提供嵌入存储并支持相似词搜索。它通常与 LangChain 结合使用,用于对话式人工智能和其他基于 LLM 的应用。.

你应该使用的东西

现在,让我们回顾一下向量数据库的一些应用案例。.

  • 向量数据库可用于需要长期记忆存储的对话代理。Langchain 可以轻松实现这一点,使对话代理能够查询并将对话历史记录存储在向量数据库中。当用户交互时,机器人会从过去的对话中提取与上下文相关的片段,从而提升用户体验。.
  • 向量数据库可用于语义搜索和信息检索,其原理是检索语义相似的文档或文本。它们查找的是与查询文本相关的内容,而不是精确匹配关键词。.
  • 电子商务、音乐流媒体或社交媒体等平台使用向量数据库来生成推荐内容。通过将用户的物品和偏好表示为向量,系统可以找到与用户过去兴趣相似的产品、歌曲或内容。.
  • 图片和视频平台使用矢量数据库来查找视觉上相似的内容。.

向量数据库面临的挑战

  • 可扩展性和性能:随着数据量的持续增长,如何在保证准确性的同时,保持矢量数据库的快速性和可扩展性成为一项挑战。在生成准确的搜索结果时,平衡速度和准确性也可能是一个潜在的难题。.
  • 成本和资源密集度:高维向量运算可能资源密集,需要强大的硬件和高效的索引,这会增加存储和计算成本。.
  • 精确度与近似度的权衡:向量数据库使用最近邻(ANN)技术来实现更快的搜索,但可能会产生近似匹配而不是精确匹配。.
  • 与传统系统集成:将矢量数据库与现有的传统数据库集成可能具有挑战性,因为它们使用不同的数据结构和检索方法。.

结果

向量数据库改变了我们存储和搜索复杂数据(例如图像、音频、文本和推荐信息)的方式,它允许在高维空间中进行基于相似性的搜索。与需要精确匹配的传统数据库不同,向量数据库使用嵌入向量和相似度评分来寻找«足够接近»的结果,使其非常适合个性化推荐、语义搜索和异常检测等应用。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢