chatgpt盛行的当下,向量数据库为大模型配备了一个超级大脑对吗

机心原件

作者:王道格

编辑:H4O

你是否曾在网上看过一张壁纸,发现照片中的雪山和湖泊非常吸引人,你想知道这位美女来自哪个国家,却又不知道如何搜索?当你在阅读一篇文章时,当你想更多地了解这个话题时,当你想找到更多的观点和信息但不知道如何准确描述时,或者当你在听一首歌时,你可以当您想找到更多歌曲时。我们有相同的风格和感受,但我不知道如何准确地描述。我们现在需要的是一个能够理解用户意图、提供最相关的结果并让您轻松找到所需信息的工具。

解决这些问题的超级大脑就是矢量数据库(VectorDB)。

Vector DB 的用途远不止于此,它还可以帮助ChatGPT 等智能系统快速从大量数据中获取最相关的答案,从而提高准确性和效率。在大家普遍面临计算能力不足、大型语言模型难以微调的情况下,为大型语言模型配备知识库(超级大脑)就显得尤为重要。这就像为大型语言模型提供一份备忘单,以便它可以更好地为您服务。

Vector ——是什么?计算机理解世界的起点。

在深入研究Vector DB 之前,我们首先快速了解(或回顾)Vector 是什么。事实上,这是你在高中和大学数学中学到的向量,但它的维度比笛卡尔坐标中的向量大。到那时,它将变得更加二维(可能是512 维)。在许多学术论文中,它的另一个名字可能更广为人知,—— Embedding。为了实现前面提到的超级大脑,我们首先需要让这个大脑能够理解各种信息,这就是嵌入的作用。

您可能想知道“什么是嵌入?”想象一下您正在看电影。电影中的人物、情节、对话和其他信息会被你的大脑自动翻译成可以理解的格式。这是一个内置过程。大脑的理解能力真是令人惊奇。同样,我们也可以要求计算机做类似的事情:将不同类型的数据转换成计算机可以理解的格式。计算机只接受数字或向量。复习一下高中数学就可以了。二维向量可以代表笛卡尔坐标系中的每个点,也可以代表这个笛卡尔坐标系中的所有信息。而如果无限扩展维度,就可以表达无限量的信息。你可能在一些科幻电影中看到,高等生命可能不存在于像我们这样的三维身体中,但它们可能存在于更高的维度中。例如,时间是第四维度,当你逃脱后,你就变成了第四维度的生物。这实际上解释了为什么嵌入可以帮助我们更好地理解世界。

只有我们的身体可以进入第三维度,但只有我们的灵魂存在于更高的维度。

在理解了为什么数字序列可以帮助计算机理解世界之后,您还可以考虑下一个更实际的问题:如何将数据转换为向量。这取决于人工智能领域取得的进展。我们开发了许多模型,可以将任何类型的数据映射到高维空间,并生成嵌入数据表示的向量。

嵌入方法有很多种,包括文本嵌入(允许将文本转换为矢量)、音频嵌入(允许将图像转换为矢量)以及视频嵌入(允许将视频转换为矢量)。例如,如果电影包含声音和图像,则应将多模态嵌入和视频嵌入结合起来,以更全面地表征电影。模态嵌入。图1 显示了几组文本嵌入情况。最简单的例子之一是国王- 男性+ 女性=王后,这是小学时练习的简单加法和减法。

图1. 三维矢量图。

通过使用嵌入方法,可以将各种数据矢量化并存储在Vector DB中。当搜索某种类型的数据时,只需要指定一个查询向量即可。这个查询向量可以是相同类型的数据,也可以是不同类型的数据,只要它代表了你想要搜索的信息或条件。然后,Vector DB 使用相似性度量来计算查询向量与存储的向量之间的距离或相似度,并返回最相似或相关向量的列表。您可以使用此列表查找所需的数据,或进一步缩小范围。当然,矢量搜索近年来的流行与大规模模型的威力不断增强密切相关。较大的模型通常可以更好地理解和生成更高维度和更复杂的数据表示,从而为向量搜索提供更准确和更丰富的语义信息。相反,向量搜索还为大型模型提供了信息补充和长上下文处理能力,这也可以进一步提高模型性能。此外,向量搜索在大规模模型的训练和应用中发挥着重要作用。矢量数据库并不是执行矢量搜索的唯一方法,但它们绝对是最有效和最方便的。

在未来的文章中,我们将更详细地探讨为什么矢量数据库是构建未来人工智能系统的基本且重要的环节。

什么是Vector DB ——数据库专用智慧药水瓶?

了解了VectorDB 中存储的内容,结合简介中的解释,将更容易理解VectorDB 的真正含义。这是一种新型的数据库,它包含的新东西就是嵌入。这个新事物并不因为它是新的而新。从传统的直接内容存储切换到矢量存储就像给你的数据库注入一剂智慧药水,让它变得更智能、更强大。

Vector DB就像一个超级侦探;

根据内容和含义搜索数据

,而不是根据标签或关键词搜索数据,这就像在无组织的图书馆中寻找一本书。您不需要知道该书的ISBN 号;只需告诉Vector DB 您想要什么书,它就会自动搜索。

Vector DB 还充当超级翻译器。

您可以使用一种类型的数据来搜索另一种类型的数据。如果您知道歌曲的旋律但不知道标题,Vector DB 可以帮助您查找有关该歌曲的信息。

Vector DB堪称超级搜索引擎。

快速准确地搜索大量复杂数据。这就像身处一个巨大的迷宫,但Vector DB 是您的导航,可以帮助您快速找到出口。

正如一开始提到的,VectorDB不仅具有上述优点,还有一个非常重要且流行的应用场景:与LLM的结合。 LLM指的是大型语言模型,它就像一个超级作家,可以生成自然语言文本并理解和回答自然语言问题。然而,LLM也存在一些挑战,比如缺乏领域知识、缺乏长期记忆、缺乏事实一致性等。

为了解决这些挑战,Vector DB 就像LLM 的百科全书,LLM 根据用户查询检索Vector DB 中的相关数据,并根据数据的内容和语义更新上下文,以便生成更多相关信息。和准确的书写。这样,法学硕士保留了长期记忆,可以随时获取最新、最全面的信息,也能够保持事实一致性和逻辑一致性。

Vector DB和LLM结合的具体例子有很多。如果你有一个基于LLM的聊天机器人,并询问“最近有什么好看的电影吗?”,ChatGPT本身只能回答数据中包含的信息。 (2023年之前)并使用外部知识库,机器人可以在Vector DB中搜索最近的电影评分向量并返回一些评分较高的电影。如果你让朋友推荐一部电影,他或她会根据他或她的记忆和你的口味来推荐。

ChatGPT本身就像一个八旬老人,信息还来自年轻时,但加入外部知识库的ChatGPT突然成为你的同伴和朋友。随时查看我们的社交平台(更新的知识库)太棒了。

例如,[1]想要提供带有Numpy背景的ChatGPT(如何执行各种操作,例如求中位数和均值),但文档长达20多页,显然无法直接使用。然而,对于ChatGPT(太长)来说,只需要下面几行代码就可以建立一个可以轻松查询的VectorDB:

如果你想问这个文档中的问题,你需要的代码仍然很简单。

最后,您将得到以下结果:

借助现有的大规模语言模型理解能力,您不再需要对其进行微调,只需连接外部知识库即可快速获取最新知识。

简单易用。

Vector DB ——的发展史好莱坞英雄的成长史

Vector DB的故事就像好莱坞大片中的励志英雄,从默默无闻到明星崛起。它的起源可以追溯到生物技术和基因研究的兴起。 20 世纪70 年代末,DNA 测序作为一个新的研究领域开始受到关注。为了存储大量DNA 链数据,科学家需要一种可以处理高维向量的新方法。这就是Vector DB的诞生,这是一个将所有数据转换为向量,计算数据之间相似度,实现数据分类、聚类、搜索等功能的数据库。

然而,此时Vector DB 还非常初级,无法处理其他类型的数据,例如图像、音频或视频,但可以计算数据的表面相似性,这就是我能做的。不会计算数据中的深层相似性。它只能处理静态数据,不能处理动态数据。尽管如此,它还是显示出了其独特的潜力和魅力。

在Vector DB出现之前,普遍使用的是MySQL、Oracle等关系型数据库。这些数据库以表格的形式存储数据,适合存储结构化数据,但更适合存储文本、图像、音频等非结构化数据。等等,都比较难处理。此外,关系数据库不适合处理大数据,因为在处理大量数据时其性能会下降。这就像在拥挤的图书馆里找到一本书一样。我知道它在哪个架子上,但我花了一些时间才找到它。但在当时,这就足够了。

随着时间的推移,我们看到Vector DB 在各种领域和应用程序中不断成长和发展。 20世纪90年代末和2000年代初,美国国立卫生研究院和斯坦福大学利用Vector DB进行了一系列遗传学研究,并发表了许多高质量的论文[2]。随着2005年至2015年基因研究的深入和加速,Vector DB也同步增长,到2023年将广泛用于基因序列比对、基因组注释等。发挥着重要作用[3,4]。

当前,随着数据类型和规模的多样化,关系数据库的局限性逐渐暴露出来。首先,关系数据库主要适合结构化数据,但处理文本、图像、音频等非结构化数据相对困难。其次,关系数据库不适合处理大数据,因为在处理大量数据时其性能会下降。最后,虽然关系数据库查询语言(例如SQL)功能强大,但复杂的查询和分析任务需要编写复杂的SQL语句,这对于非专家用户来说可能很困难。

从2023年到2023年,我们见证了Vector DB的爆炸式增长,它开始应用于自然语言处理、计算机视觉和推荐系统等领域。所有这些领域都需要处理大量且多样化的数据并从中提取有价值的信息。 Vector DB使用余弦相似度、欧几里得距离和杰卡德相似度等测量方法[6],以及逆向索引、局部感知散列和乘积量化等索引技术来实现高效且准确的向量。大多数人都听说过或使用过推荐系统、图片搜索(淘宝的图片搜索产品)、嗡嗡搜索、问答机器人等。其中的核心是Vector DB。

正当我以为故事已经进入高潮的时候,Vector DB又给我们带来了另一个惊喜。今年,Vector DB 开始应用于与大型语言模型相结合的应用程序中。

它为大型语言模型提供了外部知识库,允许它们根据用户查询检索Vector DB 中的相关数据,并根据数据内容和语义更新上下文,生成更相关和更准确的文本。这些大规模语言模型通常使用深度神经网络来学习文本数据中隐含的模式和结构,并可以生成流畅、一致的文本。 Vector DB 使用BERT 和GPT 等预训练模型将文本转换为向量,并使用FAISS 和Milvus 等开源平台构建和管理向量数据库。

Vector DB解决了很多问题,给人们带来了很多价值。采用新的数据结构和算法,可以有效存储和检索向量,保证检索的准确性和效率,处理大规模、复杂的数据。它还可以与其他工具和平台结合以提供更多功能和服务。它已成为为人们提供更好的信息获取和沟通体验的必备工具。它不仅击败了其他DB,还赢得了用户的心。

然而,这个重磅炸弹仍在进行中,Vector DB 仍有改进的空间。例如,在处理大规模数据时,您可能会面临存储和计算资源的挑战。这就像在无底的海洋中寻找珍珠。处理复杂查询时,您还可能面临性能和准确性挑战。当您处理动态数据时,您可能会发现自己在复杂的迷宫中航行,并面临数据更新和同步的挑战。这就像在不断变化的沙漠中找到一个固定的地标一样。

但随着技术的不断发展和进步,我们有理由相信Vector DB会变得越来越强大和完善,为我们的生活带来更多的便利和价值。就像我们的励志英雄一样,无论面临多少磨难和挑战,他们都不断前进、成长,最终实现自己的目标。这一红极一时的事件尚未结束,Vector DB 仍在努力维持这一来之不易的成功。

在介绍Vector DB最近的努力之前,我必须先说以下几点。

Vector DB和关系数据库各有各的优点。您选择的数据库取决于您的具体应用程序要求。如果您需要使用结构化数据并且数据量不大,那么关系数据库可能是一个不错的选择。但是,如果您需要处理非结构化数据或大规模数据,Vector DB 可能是更好的选择。

Vector DB Tech Core —— 超级英雄武器

为了更深入地了解超级英雄,我们就从超级英雄的日常生活开始。想象一下,您是一名超级英雄,您的工作是理解和处理大量信息。您的工具可以在称为Vector DB 的新型数据库中存储和处理嵌入。这很酷。但这并不容易。需要解决的问题包括如何将数据转换为向量(向量嵌入)、如何测量向量之间的相似性(相似性测量)、如何索引和检索向量(向量索引和检索)以及如何压缩。并存储向量。存储空间(矢量压缩)。这些是Vector DB的核心技术,也是做超级大脑的主要痛点。

那么让我们来探索一下Vector DB 的技术核心,看看这个超级英雄每天是如何工作的。让我们用一个例子来更容易地理解这些步骤。假设你是一个超级英雄,并被赋予管理一个巨大图书馆的任务。这个图书馆藏书种类繁多,包括小说、诗歌、科学论文、历史书籍等等。您的目标是帮助读者快速准确地找到他们需要的书籍。

首先,我们需要将每本书转换为向量。这就像为每本书创建一个独特的指纹,反映了该书的内容、风格、主题等重要信息。这个过程就是向量嵌入。这是一个很大的话题,我暂时不会在本文中详细讨论,但是由于人工智能的进步,嵌入现在可以更好地表示我们想要表示的数据[7]。

假设我们有良好的表示后,我们需要测量向量之间的相似度。这就像比较两本书的指纹,看看它们有多相似。这个过程就是相似度度量。早期,有时使用欧氏距离或余弦相似度来衡量相似度。然而,随着时间的推移,我们意识到这些方法在处理高维数据时可能会出现问题。

因此,最近邻搜索和局部相关散列等现代相似性测量方法被开发出来[8]。这些方法可以更有效地处理高维数据并提供更准确的相似性测量。接下来,您需要索引并检索向量。这就像创建一个图书馆目录,让读者可以根据自己的需求快速找到所需的书籍。这个过程就是向量索引和检索。早期,矢量是使用线性搜索和树结构来索引和检索的。然而,随着数据量的增加,这些方法可能变得低效。因此,现代向量索引和检索方法如逆索引和乘积量化已经被开发出来[9]。这些方法可以更有效地处理大数据,从而加快索引和搜索速度。

最后,我们需要对向量进行压缩以节省存储空间。这就像压缩一本书的内容以使其占用更少的空间。这个过程就是矢量压缩。早期,矢量是使用简单的压缩算法(例如霍夫曼编码和游程编码)来压缩的。然而,随着数据量的增加,这些方法可能不再能够满足您的压缩需求。因此,诸如乘积量化和优化乘积量化等现代矢量压缩方法被开发出来[10]。这些方法可以更有效地压缩矢量并提供更高的压缩比。

读完本文后,如果你是一名AI 专家,你可能已经意识到向量嵌入和相似度度量都是重要问题,但在Vector DB 的发展、AI 的演进中,嵌入不再是最大的因素。问题。目前要解决的主要问题实际上是向量索引和向量搜索。这是因为随着数据量的增加,如何有效地索引和检索向量成为一个重大挑战。

索引、搜索和压缩—— 超级英雄麻烦

非工程师疏散建议

但是,即使你成为超级英雄,你仍然有自己的问题。超级英雄的故事已经讲完了,让我们看看VectorDB 做了什么。首先,让我们正式定义这个过程(图2)。

首先,使用嵌入模型将要索引的数据转换为向量嵌入。

然后将向量嵌入存储在向量数据库中,维护对相应原始数据的引用。

最后,当应用程序发出查询时,我们使用相同的嵌入模型将查询转换为向量嵌入,并使用它来查找数据库中最相似的向量嵌入。如前所述,这些相似的向量嵌入反映了生成它们的原始数据的含义。

图2.VectotDB 应用程序流程。图片来源:https://www.pinecone.io/learn/vector-database/

Vector DB的主要瓶颈是第二步和第三步中的索引、检索和压缩。因为Vector DB 的目标和好处是改进处理。

大数据

:

矢量索引和搜索是超级英雄的关键武器之一,也是Vector DB 如何处理大规模数据的关键。向量索引的任务是在大量向量中快速找到与查询向量最相似的向量。这就像在一个巨大的超市里,立刻就能找到你想要的东西。想象一下,如果超市中的产品没有分类和贴上标签,需要多长时间才能找到您需要的产品。矢量索引是这家超市的分类标签,可以帮助您快速找到您想要的商品。

超级英雄武器库中的另一个武器是矢量压缩。这主要是指对向量进行编码以减少存储空间和传输时间的过程。这个过程通常涉及两个方面:压缩率和失真率。压缩比是指压缩后的矢量与原始矢量的大小比。失真率是指压缩后的矢量与原始矢量的相似度之差。一般来说,增加压缩率会降低失真率,反之亦然。因此,不同的应用场景需要根据需要选择合适的压缩方法和参数。矢量压缩就像在超市包装和销售产品一样。例如,超市可能会以包装形式出售常用的厨房用品(例如盐、糖、醋和油)。这节省了顾客购物时间并节省了超市货架空间。这就像压缩比,通过打包销售产品,您可以减少产品的存储空间和客户的购物时间。然而,打包销售也可能带来一些问题。例如,客户可能只想要某些商品,但必须购买整个包裹。或者,包装的产品可能与客户最初期望的略有不同。这就像失真率一样,包装和销售产品可能会降低产品满意度。因此,超市应根据顾客需求和货架空间选择合适的包装方式和参数。同样,矢量压缩需要根据应用需求和存储容量选择合适的压缩方法和参数。

超级英雄武器的研制过程也是这部好莱坞电影的重要组成部分。从早期的线性扫描到如今的复杂结构,每一步都是为了解决问题,提高效率,更好地服务我们的用户。

早期,人们使用线性扫描。这就像在一个没有类别的超市里,必须仔细检查每件商品,直到找到你想要的东西。这种方法虽然简单直观,但是效率非常低,尤其是当数据量非常大的时候。这就像在超市寻找产品一样,可能需要一整天的时间。

为了解决线性扫描效率问题,

基于散列或基于树的方法

刚刚出现。哈希方法是将高维向量映射到低维空间或二进制编码,并使用哈希表或倒排索引进行存储和检索[12]。树方法将高维空间划分为多个子空间或聚类中心,使用树结构存储和检索这些子空间或聚类中心[13]。所有这些方法都基于精确距离计算或近似距离计算。它就像一个超市,产品分为多个区域,每个区域包含产品类型。这可以让您直接进入您想要的项目区域,而无需查看所有项目。这大大提高了效率。

然而,在处理高维数据时,比如一个非常大的超市,产品种类很多,而且划分的区域非常细,就需要花费大量的时间。不同区域之间穿梭。

图3. 树(基于树)。图片来源:https://www.displayr.com/how-is-splitting-decded-for-decision-trees/

为了解决这个问题,

基于乘积量化(PQ)的向量索引算法

也有人提出[14]。 PQ方法将高维向量划分为多个子向量,并对每个子向量进行独立的标量量化(SQ)。也就是说,每个子向量都使用有限集中最接近的值来近似表示。这样做可以显着减少存储空间和计算时间,并且原始距离可以通过乘积距离(PD)来近似。不仅像超市一样按区域分类商品,而且您还可以直接前往您喜欢的品牌区域,而无需经过每个区域。这大大提高了效率。

图4. 乘积量化(PQ) 来源:https://www.displayr.com/how-is-splitting-decded-for-decision-trees/

于是,为了解决树处理高维数据的问题,人们提出了。

BBF(Best Bin First)算法

[15]。 BBF算法是一种基于优先级队列的搜索算法,可以在KD树中更快地找到最近邻居。 KD 树(一种树结构)的搜索过程告诉我们,在搜索时,我们首先沿着KD 树找到叶节点,然后再向上查找。返回是搜索的相反顺序。对于叶节点,

回溯时不会使用这些点的信息。 BBF在回溯时利用这些信息对每个需要回溯的节点进行优先级排序,使其能够更快地找到其最近的邻居。

其实BBF算法的思想比较简单。将回溯所需的遍历节点添加到队列中,并根据节点确定的搜索点到超平面的距离进行排序。然后,每次都会优先通过最高优先级(即距离最短的节点),直到队列为空,算法终止。同时bbf算法还设置了时间限制。如果算法的执行时间超过此限制,则执行停止并返回当前最近邻居作为结果,无论它是否为空。当您应用BBF时,您不仅可以像在超市一样知道每个产品所在的区域,还可以知道该区域哪些产品受欢迎,并且直接进入热门产品,而不必检查该区域的每个产品区可以做。这进一步提高了效率。然而BBF算法在处理大规模数据时仍然效率不高。这类似于知道每个地区流行什么产品,但仍然需要在多个地区之间来回奔波。

与此同时,在1910 年代中期,出现了PQ 方法的改进版本。

逆多索引(IMI)

[11]。 IMI方法将高维向量划分为两个子向量,对每个子向量进行独立的PQ,得到两个子码本。然后将所有向量按照第一子码本的索引进行分组,并且每个列表中的向量具有相同的第一子码本的索引。这允许将高维空间划分为更细粒度的子空间,可以使用倒排索引来存储和检索这些子空间。例如2014年提出的CVPR

基于IMI的最近邻搜索方法

,可用于处理数百万级高级数据。

维数据集。IMI 方法将高维向量分割成两个子向量,然后对每个子向量进行独立的 PQ,得到两个子码本。这就像在超市里,我们不仅按照商品类型(如食品、饮料、日用品等)来分类,还进一步按照品牌来分类。这样,顾客可以更精确地找到他们需要的商品,提高了购物效率。
同时,除了数据维度高以外,还有一个数据量大的问题。为了解决处理大规模数据的问题,人们提出了
局部敏感哈希(LSH)
。LSH 是一种基于哈希的索引方法,它可以将相似的向量哈希到同一个桶中。这就像在一个大型超市里,我们不仅按照商品类型和品牌来分类,还进一步按照价格区间来分类。这样,顾客可以更快地找到他们的目标商品。然而,当超市的规模变得非常大时,即使有这样的分类系统,顾客仍然需要在大量的商品之间进行选择,这就增加了购物的复杂性。同样,当处理高维数据时,LSH 的效率仍然面临挑战。
此时,在 IMI 的基础上,一种更先进的向量索引算法出现了,它叫做
各向异性向量量化(AVQ)
[17]。AVQ 方法是把高维向量分割成若干个子空间,然后对每个子空间进行独立的 PQ,得到若干个子码本。然后,把所有的向量按照它们的子码本的组合分组,得到若干个列表,每个列表中的向量都有相同的子码本的组合。这样做可以根据数据的分布自适应地划分高维空间,并且可以用多重倒排索引来存储和检索。这就像是在超市里,商品不仅按照区域分类,还按照品牌分类,还按照价格分类,你可以直接去你喜欢的品牌和价格的区域,而不需要在所有的区域之间穿梭。这大大提高了效率。
虽然这个武器一直在进化,但是它都存在一个比较大的问题,就是
召回精度不够,随着维度变大,召回精度可能会变得越来越低
。所以时间拉到现在,最近的
向量索引大多是基于图(graph-based)或者深度学习(deep learning-based)的方法

基于图(graph-based)的方法则与上述算法有所不同。图方法是把高维空间看作是一个图,每个节点是一个向量,每条边是一个距离或者相似度。然后用一些启发式或者优化的算法来构建和遍历这个图,从而找到最相似的向量。例如,在 2023 年发表在 NIPS 上的论文《Hierarchical Navigable Small World Graphs》中,作者提出了一种基于分层可导航小世界(Hierarchical Navigable Small World, HNSW)图的最近邻搜索方法,它可以用于处理任意度量空间的数据。HNSW 方法是把高维向量分层地组织成一个图,每个节点是一个向量,每条边是一个距离或者相似度。每一层都是一个可导航小世界(Navigable Small World, NSW)图,即一个具有短路径和局部连通性的图。每一层的节点数目随机地减少,从而形成一个金字塔状的结构。这样做可以利用不同层次的边来加速搜索过程,并且可以用贪心算法来遍历图。这就像是在超市里,你有一个详细的地图,这个地图上标记了每个商品的位置,你可以通过这个地图来找到你想要的商品,而不需要在所有的区域之间穿梭。这也大大提高了效率。
最后,深度学习方法是用一个神经网络来学习一个映射函数,把高维向量映射到低维空间或者二进制编码,然后用哈希表或者倒排索引来存储和检索。这就像是在超市里,你有一个智能助手,这个助手可以根据你的需求,快速地找到你想要的商品,而不需要你自己去寻找。这个智能助手就是神经网络,它可以学习和理解你的需求,然后帮助你找到你想要的商品。一个具体的例子 [16] 提出了一种基于图神经网络(Graph Neural Network, GNN)的最近邻搜索方法,它可以用于学习任意图结构数据的表示。GNN 方法是用一个神经网络来学习一个映射函数,把高维向量映射到低维空间,并且保留图结构信息。然后用哈希表或者倒排索引来存储和检索。这样做可以利用神经网络的强大表达能力来捕捉复杂的图特征,并且可以用哈希或者倒排技术来加速搜索过程。
向量索引面临的问题是如何在保证检索质量和效率的同时,适应不同类型和领域的数据,以及不同场景和需求的应用。不同的数据可能有不同的分布、维度、密度、噪声等特征,不同的应用可能有不同的准确性、速度、可扩展性、可解释性等指标。因此,没有一种通用的向量索引算法可以满足所有情况,而需要根据具体情况选择或者设计合适的向量索引算法。这就像是在超市里,不同的顾客可能有不同的需求,需要不同的商品,所以超市需要提供各种各样的商品,以满足不同顾客的需求。
基于现在这些问题,我们未来还是有很多方向可以去探索:
动态向量索引
:大多数现有的向量索引算法都是针对静态数据集设计的,即数据集在建立索引后不会发生变化。然而,在实际应用中,数据集往往是动态变化的,即会有新的数据加入或者旧的数据删除。如何在保持高效检索性能的同时,支持动态更新数据集是一个重要而困难的问题。这就像是在超市里,新的商品会不断上架,旧的商品会被售完或者下架,如何在保持高效服务的同时,支持动态更新商品是一个重要而困难的问题。
分布式向量索引
:随着数据规模和维度的增长,单机内存和计算能力可能无法满足向量索引和检索的需求。如何把数据集和索引结构分布到多台机器上,并且实现高效并行检索是另一个重要而困难的问题。这就像是在超市里,随着商品种类和数量的增长,单个超市可能无法满足顾客的需求,需要开设多个分店,并且实现高效并行服务。
多模态向量索引
:在实际应用中,数据往往是多模态(multimodal)的,即由不同类型或者来源的信息组成,如文本、图像、音频、视频等。如何把不同模态的数据映射到统一或者兼容的向量空间,并且实现跨模态(cross-modal)或者联合模态(joint-modal)的检索是一个有趣而有挑战的问题。这就像是在超市里,商品不仅有食品、饮料、日用品、电器等不同类型,还有中文、英文、日文、韩文等不同来源的标签,如何把不同类型和来源的商品分类到统一或者兼容的区域,并且实现跨类型或者联合类型的服务是一个有趣而有挑战的问题。
总的来说,向量索引就像是超市的分类标签,它可以帮助我们快速找到我们想要的商品,即最相似的向量。虽然现有的向量索引算法已经取得了很大的进步,但是还有很多问题需要解决,还有很多方向可以探索。
Vector DB 产品展示会
看完 Vector DB 的技术,

本文来自网络,不代表服装搭配_服装搭配的技巧_衣服的穿配法_服装搭配网立场,转载请注明出处:https://www.fzdapei.com/334251.html
上一篇
下一篇

为您推荐

返回顶部