向量数据库最初是为了解决大规模数据的相似性搜索和推荐问题而设计的,比较著名的有Annoy和FAISS等。随着互联网时代海量数据的爆炸式增长,传统搜索引擎在处理这些数据时显得力不从心,而向量数据库凭借其高效的数据表达和检索能力迅速成为推荐系统的核心引擎。
在大语言模型兴起之前,向量数据库已经被广泛应用于搜索和推荐场景。它通过将数据向量化,实现对语义级别的理解和匹配。然而,随着ChatGPT等大型模型的出现,人工智能产业正在经历重塑,同时也凸显了向量数据库的优势。
大语言模型虽然在知识广度方面具有优势,但对于领域知识却有一定的局限性。而集成向量数据库的语义搜索和分析能力,则能够弥补这一缺陷,提升大语言模型的知识应用能力。当前,向量数据库正在加速演进,有望使大语言模型在实际场景中发挥更大的价值。
图1 向量数据库应用流程
图源:https://www.pinecone.io/learn/vector-database/
向量数据库是一类专门存储向量数据的数据库。所谓的向量数据是由数值向量组成的数据集合,每个向量由一组有序的数值组成,这些数值可以是实数或离散值。可以将其简单地理解为一个矩阵,这些向量通常来源于各类数据的转换,如语音、文字、图片等。
在向量数据库中,主要存储的是向量数据。然而,具体包含哪些数据类型还取决于数据库的设计。例如,Milvus不仅仅存储向量数据,还可以存储大部分关系型数据库中的数据内容。在人工智能领域,只有将现实世界中的事物转化为向量,才能进行计算,一切皆可向量化。举个例子,“我爱学习”可以被转化为向量表示:
我:[0.2,0.35,0.26,...,0.36,0.38,0.53]
爱:[0.7,0.935,0.526,...,0.346,0.238,0.653]
学习:[0.42,0.635,0.226,...,0.436,0.838,0.053]
通常使用预训练模型将图片、语音、文字等转化为向量。不同的应用场景选择不同的模型,例如文本可以使用M3e模型,图片可以采用CLIP模型。这些预训练模型可以看作是复杂的函数,输入模型的变量后,可以得到对应的输出向量。这些向量经过一定的技术存储到向量数据库中(如图1所示),用户就可以进行快速检索了。当然,用户的输入可能是图片或文字等,查询的前提是需要将其转化为向量。为了采用统一的标准表达数据,通常会使用相同的预训练模型进行向量转化。
图2 向量数据的组织方式图解
向量数据库与传统数据库的不同之处在于,我们通常在搜索中使用关键字搜索和全文搜索,搜索结果一定是满足查询条件的。然而,向量数据库的查询结果不一定完全符合条件,而是相对符合条件的。具体来说,当搜索内容是“小明的生日是什么时候”时,查询的结果可能是“小明是1992年11月1日出生”,这可能是数据库中最符合条件的查询结果,因此可以认为该查询是近似最相邻的。
过去,当我们忘记了一个文件的名称,只记得大致内容时,很难找到该文件。然而,向量数据库的出现解决了这个问题。我们可以将文件、图片、语音等非结构化数据存储到向量数据库中,通过文字、语音、图片等作为查询条件,可以根据查询内容而不是文件名来搜索最符合条件的结果。这就是向量数据库的魅力,而传统数据库无法实现这一点。
电商应用通常利用用户的历史行为数据生成用户向量,通过计算这些用户向量之间的相似度,实现个性化商品推荐。我们经常能感受到这种推荐,比如在浏览某个商品后,电商会向我们推荐类似的物品。类似地,短视频应用也使用相同的方法,向用户推荐视频。这些背后都是将数据转化为向量,存储到向量数据库中,以便后续的查询和推荐。
人脸图像经过向量化处理后,可以快速计算两张人脸图像向量的相似度,以辅助识别是否为同一人。例如,银行应用使用摄像头采集客户的人脸图像,通过运算提取面部特征并完成向量化。随后,与存储在数据库中的人脸向量进行比对,判断是否为同一人,实现快速验证。
向量数据库在社交媒体分析领域支持相似性查询和聚合操作,能够快速识别和提取社交媒体数据中的模式和趋势,包括情感分析、主题建模和社区发现等。
向量数据库的兴起依赖于大模型的发展,那么如何将它们结合起来解决大模型的知识缺乏问题呢?
首先,可以将行业内的非结构化知识(例如长文本)进行分段处理,然后使用预训练模型生成相应的向量,并将其存储在向量数据库中,从而构建外部知识库。
在使用大模型进行行业问题回答时,可以快速加载和查询向量数据库中的文本向量数据,这些数据可以作为大模型的外部知识输入。简单来说,当你获取到某个知识,比如'小明是一个程序员',你可以将这个知识存储在向量数据库中,然后再问大模型,'小明是做什么的?',它肯定会回答'小明是程序员'。
向量数据库的出现为非结构化数据的搜索提供了新的解决方案,同时与大模型的结合也为解决大模型知识缺乏问题提供了有效手段。
图3 向量数据库与大模型结合的流程图
(图片来源于网络)
根据 VectorDBBench.com 的数据,在2023年7月的国产向量数据库排行榜中,排名前十的向量数据库分别为:Milvus、Milvus Cloud、Tencent Cloud VectorDB、Zilliz Cloud、TensorDB、cVector、Om-iBASE、Vearch、Transwarp Hippo 和 Proxima。它们的具体得分如下表所示:表1 2023年7月国产向量数据库排行榜
● Milvus是国内首个支持海量向量数据存储和查询的开源向量数据库,具有高性能、高扩展性和易用性强的特点。
● Milvus Cloud是Milvus的云服务版本,提供了云端向量数据库服务,可以快速搭建云端向量数据库平台,支持多种数据源接入和多种查询语言,同时还提供了可视化界面和API接口,方便用户进行数据管理和查询。
● Tencent Cloud VectorDB是腾讯云推出的向量数据库产品,具有高性能、高扩展性和高安全性的特点,支持多种数据类型和多种查询语言。
● Zilliz Cloud是一个向量数据库云平台,支持多种数据类型和多种查询语言,具有高性能、高扩展性和高安全性的特点。
● TensorDB是一个分布式向量数据库系统,具有高性能、高扩展性和易用性强的特点,支持多种数据类型和多种查询语言。
数据库的发展经历了从文件系统到关系数据库再到分布式数据库和NoSQL数据库的演变,不断提高了数据管理和处理的效率及可靠性。这为各行业的信息化建设提供了强有力的支持。作为一种新兴的数据库技术,向量数据库带来了革命性的改进,为数据存储和检索提供了更高效、更强大、更灵活的能力。
向量数据库具备快速存储和检索大规模向量的能力,加速了复杂数据的查询和匹配过程。它还支持高级的数据分析和挖掘功能,可以进行相似性搜索、聚类分析等复杂操作。此外,向量数据库具有良好的数据存储和扩展性,可以应对快速增长的数据量和需求变化。
综上,向量数据库作为一种创新的数据库技术,具有许多优势和广泛的应用前景。它将进一步推动数据管理和分析的发展,助力各行业实现更高效、更智能的信息化建设。