你是否曾经遇到过这样的情况:在网上看到一张壁纸,画面中的雪山和湖泊令人心驰神往,但你却不知道这是哪个国家的美景,也不知道该如何搜索;或者,在阅读一篇文章时,你想深入了解这个话题,寻找更多的观点和资料,但你却不知道该如何精确描述;又或者,当你在聆听一首歌曲时,你想寻找更多同样风格或情感的歌曲,但你却不知道如何分类。这时,你需要的是一个能够理解你的意图,为你提供最相关的结果,让你轻松找到你想要的信息的工具。
这就是 Vector Data Base (VectorDB, 向量数据库),它就像一个超级大脑,帮助你解决这些问题!
Vector DB 的用途远不止于此,它还能够帮助像 ChatGPT 这样的智能系统,从海量的数据中快速检索出最合适的答案,提高它们的准确性和效率。在当前大家普遍面临算力不足,难以对大语言模型进行微调的情况下,为大语言模型配备一个知识库(超级大脑)就显得尤为重要。这就像给大语言模型提供了一份小抄,使其能够更好地服务于我们。
Vector 是什么 —— 计算机理解世界的起点
在我们深入了解 Vector DB 之前,让我们先来简单理解(或回顾)一下什么是 Vector,其实它也就是我们在高中数学或者大学数学里学到的向量,只不过维度比当时的直角坐标系里的二维多一点而已(或许多到了 512 维)。在许多学术论文中,你可能更熟悉它的另一个名字 —— 嵌入(Embedding)。为了实现我们前面提到的超级大脑,我们首先需要让这个大脑理解各种信息,而这就是嵌入的作用。
你可能会问,什么是嵌入呢?想象一下,你正在看一部电影,你的大脑会自动将电影中的人物、情节、对话等信息转化为你可以理解的形式。这就是一种嵌入的过程。同样,我们也可以让计算机做类似的事情,将各种类型的数据转化为它可以理解的形式,而计算机接受的也就是数字,也就是向量。回顾一下高中数学就好了,二维向量可以表征一个直角坐标系里的每个点,也就表征了这个直角坐标系里的所有信息了。那如果我们把维度无限拉大,他就可以表征无限多的信息。你可能在一些科幻电影中看到过,说高等生物可能不会像我们一样以三维的肉体存在,他们可能存在于更高的维度。比如时间就是第四维,跳脱之后就变成了四维生物。这其实就说明了为什么嵌入可以更好的理解这个世界,因为三维只能容纳我们的肉体,而高维的世界,才存在着我们的灵魂。
理解了为什么一串数字可以帮助计算机理解世界之后,你可能会考虑到下一步更实际的问题,如何将数据转换为向量呢?这就要靠我们在 AI 界做出的进步了,我们研究出了很多模型,可以将任意类型的数据映射到一个高维空间中,生成一个向量,这个向量就是数据的嵌入表示。
嵌入方法有很多种,例如文本嵌入(text embedding),可以将文字转换为向量;图像嵌入(image embedding),可以将图片转换为向量;音频嵌入(audio embedding),可以将声音转换为向量;视频嵌入(video embedding),可以将视频转换为向量;甚至还有多模态嵌入(multimodal embedding),可以将不同类型的数据转换为同一个空间中的向量,比如一个电影包含声音和画面,那如果要更全面的表征这个电影,我们就需要结合音频嵌入和视频嵌入,也就是多模态嵌入了。图 1 展示了几组文本嵌入的情况,一个最简单的例子就是 king – man + woman = queen,简单的小学加减法。
深入的向量研究也会是一个长期且深远的研究方向。随着 Vector DB 技术的成熟和普及,我们需要更深入的理论探索和实践探索。例如,在理论方面,我们需要更好地理解、度量和优化向量空间中的相似度问题;在实践方面,我们需要更好地结合、应用和评估 Vector DB 技术在不同领域中的效果。
作为研究者,我们有很多可以探索和研究的方向,包括向量算法的优化和创新,向量数据库的功能增强,向量数据库的应用扩展,以及深入的向量研究。让我们一起期待 Vector DB 的未来,一起探索向量数据的无限可能!