ChatGPT盛行的当下,向量数据库为大

白癜风爱心传递分享会 https://m.39.net/baidianfeng/a_5970339.html

机器之心原创

作者:DougWang

编辑:H4O

你是否有过这样的经历:你在网上看到一张壁纸,画面中的雪山和湖泊令人心驰神往,你想知道这是哪个国家的美景,却不知道如何搜索;或者,在阅读一篇文章时,你想深入了解这个话题,寻找更多的观点和资料,却不知道该如何精确描述;又或者,当你在聆听一首歌曲时,你想寻找更多同样风格或情感的歌曲,却不知道如何分类。这时,你需要的是一个能够理解你的意图,为你提供最相关的结果,让你轻松找到你想要的信息的工具。

这就是VectorDataBase(VectorDB,向量数据库),它就像一个超级大脑,帮助你解决这些问题!

VectorDB的用途远不止于此,它还能够帮助像ChatGPT这样的智能系统,从海量的数据中快速检索出最合适的答案,提高它们的准确性和效率。在当前大家普遍面临算力不足,难以对大语言模型进行微调的情况下,为大语言模型配备一个知识库(超级大脑)就显得尤为重要。这就像给大语言模型提供了一份小抄,使其能够更好地服务于我们。

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

在我们深入了解VectorDB之前,让我们先来简单理解(或回顾)一下什么是Vector,其实它也就是我们在高中数学或者大学数学里学到的向量,只不过维度比当时的直角坐标系里的二维多一点而已(或许多到了维)。在许多学术论文中,你可能更熟悉它的另一个名字——嵌入(Embedding)。为了实现我们前面提到的超级大脑,我们首先需要让这个大脑理解各种信息,而这就是嵌入的作用。

你可能会问,什么是嵌入呢?想象一下,你正在看一部电影,你的大脑会自动将电影中的人物、情节、对话等信息转化为你可以理解的形式。这就是一种嵌入的过程。很奇妙对吧,大脑就这么理解他们了。同样,我们也可以让计算机做类似的事情,将各种类型的数据转化为它可以理解的形式,而计算机接受的也就是数字,也就是向量。回顾一下高中数学就好了,二维向量可以表征一个直角坐标系里的每个点,也就表征了这个直角坐标系里的所有信息了。那如果我们把维度无限拉大,他就可以表征无限多的信息。你可能在一些科幻电影中看到过,说高等生物可能不会像我们一样以三维的肉体存在,他们可能存在于更高的维度。比如时间就是第四维,跳脱之后就变成了四维生物。这其实就说明了为什么嵌入可以更好的理解这个世界,因为三维只能容纳我们的肉体,而高维的世界,才存在着我们的灵魂。

理解了为什么一串数字可以帮助计算机理解世界之后,你可能会考虑到下一步更实际的问题,如何将数据转换为向量呢?这就要靠我们在AI界做出的进步了,我们研究出了很多模型,可以将任意类型的数据映射到一个高维空间中,生成一个向量,这个向量就是数据的嵌入表示。

嵌入方法有很多种,例如文本嵌入(textembedding),可以将文字转换为向量;图像嵌入(imageembedding),可以将图片转换为向量;音频嵌入(audioembedding),可以将声音转换为向量;视频嵌入(videoembedding),可以将视频转换为向量;甚至还有多模态嵌入(multimodalembedding),可以将不同类型的数据转换为同一个空间中的向量,比如一个电影包含声音和画面,那如果要更全面的表征这个电影,我们就需要结合音频嵌入和视频嵌入,也就是多模态嵌入了。图1展示了几组文本嵌入的情况,一个最简单的例子就是king-man+woman=queen,简单的小学加减法。

图1.三维情况下的向量图解。

有了嵌入方法,我们就可以将各种数据转换为向量,并存储在VectorDB中。当我们想要搜索某种数据时,我们只需要提供一个查询向量,这个查询向量可以是同类型或不同类型的数据,只要它能够表示我们想要找到的信息或标准。然后,VectorDB会使用一种相似度度量(similaritymeasure),来计算查询向量和存储向量之间的距离或相似度,并返回最相似或最相关的向量列表。我们就可以从这个列表中找到我们想要的数据,或者进一步缩小范围。当然,向量检索近年来的火热与大模型能力的提升是密切相关的。大模型通常能更好地理解和生成更高维度、更复杂的数据表示,这为向量检索提供了更精确、更丰富的语义信息。反之,向量检索也能为大模型提供信息的补充和长上下文的处理能力,从而进一步提高模型的性能。此外,向量检索在大模型的训练和应用中起着关键作用。虽然向量数据库不是进行向量检索的唯一方式,但它确实是所有方式中最高效、最便利的一种。

在后续的文章中,我们将进一步探讨为什么向量数据库在构建未来AI系统时是必不可少的关键环节。

VectorDB是什么——一瓶数据库专有的智慧药水

在我们了解了VectorDB里存的是什么之后,再结合我们引言里的介绍,VectorDB的真容也就呼之欲出了——它是一种新型的数据库,它新在它存的是Embeddings(嵌入)。这个新并不是为了新而新,从传统的直接存储内容转到存储向量,就像是给数据库喝了瓶智慧药水,让它变得更聪明,更强大。

VectorDB就像是一个超级侦探,它可以让你根据内容或意思来搜索数据,而不是根据标签或关键词来搜索数据。这就好像你在一个无序的图书馆里找书,不需要知道书的ISBN号,只要告诉VectorDB你想要的书的内容,它就能帮你找到。

VectorDB还可以是一个超级翻译机,它可以让你用一种类型的数据来搜索另一种类型的数据。这就好像你只知道一首歌的旋律,但不知道歌名,VectorDB就能帮你找到这首歌的信息。

VectorDB也可以被理解为一个超级搜索引擎,它可以让你在海量和复杂的数据中进行快速和准确地搜索。这就好像你在一个巨大的迷宫里,VectorDB就是你的导航,帮你快速找到出口。

如最开始所说,VectorDB不仅有以上这些好处,还有一个非常重要且热门的应用场景,那就是与LLM结合。LLM是指大型语言模型(LargeLanguageModels),它们就像是一个超级作家,可以生成自然语言文本,或者理解和回答自然语言问题。但是,LLM也有一些挑战,例如缺乏领域知识,缺乏长期记忆,缺乏事实一致性等。

为了解决这些挑战,VectorDB就像是给LLM提供了一本百科全书,让LLM可以根据用户的查询,在VectorDB中检索相关的数据,并根据数据的内容和语义来更新上下文,从而生成更相关和准确的文本。这样,LLM就可以拥有一个长期记忆,可以随时获取最新和最全面的信息,也可以保持事实一致性和逻辑连贯性。

VectorDB和LLM的结合有很多具体的例子,假设你正在使用一个基于LLM的聊天机器人,你问它:“最近有什么好看的电影吗?”ChatGPT本身只能回答他数据集里包含的信息(年之前),而有了外接知识库,机器人可以在VectorDB中搜索最近的电影评价向量,并返回一些高评价的电影。就像你问你的朋友推荐电影,他会根据他的记忆和你的口味给你推荐。

ChatGPT本身像是一个耄耋老人,信息还停留在他年轻的时候,而加入了外界知识库的ChatGPT,摇身一变变成了你的同龄人朋友,你们都紧跟时事,只需要随时去刷刷社交平台(更新知识库)就好了。

举个例子,[1]想要让ChatGPT拥有Numpy的背景知识(如何做各种运算,比如求中位数、平均值等),但是它的文档有20多页,显然是不能直接作为知识输入给ChatGPT的(长度太长),然而,建立一个可以简单查询的vectorDB只需要以下几行代码。

然后,如果你想问这个文档里的问题,所需的代码依然很简单:

最后,就会得到这个结果:

看到了吧,在现有大语言模型的理解能力下,我们已经不需要fine-tune了,只需要外接一个知识库,就能很快地得到最新的知识。

简单,好用。

VectorDB的发展历程——好莱坞英雄成长史

VectorDB的故事就像一部好莱坞大片中的励志英雄,从默默无闻到大放异彩。它的起源可以追溯到生物技术和基因研究领域的兴起。在20世纪70年代末,DNA测序作为一个新兴的研究领域开始引起人们的


转载请注明:http://www.aierlanlan.com/cyrz/7908.html