被大模型带火的向量数据库,会像关系数据库一样普及吗?

有大模型应用的地方,或许都应该有一个向量数据库存在。
软件系统 数据库
2023-09-25 06:55:03  |   作者:航标  |   来源:航标IT精选

被大模型带火的向量数据库,会像关系数据库一样普及吗?

有大模型应用的地方,或许都应该有一个向量数据库存在。
软件系统 数据库
2023-09-25 06:55:03
作者:航标
来源:航标IT精选

2022年一炮而红的ChatGPT引爆了生成式AI市场,也带火了大模型,今天市场上到处都是关于各种大模型上市的宣传。实际上,被ChatGPT带火的不只是大模型还有向量数据库。

20230925-3.jpg

向量数据库如今也已经成为了当下最热门的AI投资赛道之一,今年向量数据库初创公司Weviate 、Pinecone、Pinecone先后获得了融资,其中Pinecone融资高达1亿美元,在全球经济不明朗的投资形势下,这无疑是非常亮眼的成绩。与此同时,各种新的向量数据库也先后进入市场。7月份腾讯云发布了自己的向量数据库VectorDB,更早一些星环科技也发布了向量数据库Transwarp Hippo,更多的公司正在布局向量数据库。

有市场机构预测,到2030年向量数据库市场规模将达到500亿美元。这是一个相当惊人的数字。根据Gartner的研究数据,2022年全球数据库市场规模为910亿美元,其中关系型数据库市场80%左右。这个数据接近于2022年全球数据库市场规模的一半,是关系型数据库市场的70%。

那么,向量数据库为何这么受追捧?它和时下大火的大模型和生成式AI到底有什么关系?

真正“懂”数据语义的数据库

向量数据库并非是一种全新的数据库类型。在其为普通大众所了解、被资本市场大肆追捧之前,已经存在好几年了。比如,当下最有名的几家向量数据库公司Milvus和Pinecone都成立于2019年,Qdrant 成立于 2021 年。此前向量数据库已经在电商的搜索和购物推荐等领域得到广泛应用,一个典型的例子就是以图搜图,背后就离不开向量数据库的支撑。

向量数据库是专门处理向量数据的数据库。所谓“向量”就是一组数值,可以表示一个点在多维空间中的位置。向量数据库就是一种专门用于存储、 管理、查询、检索向量的数据库,它可以把复杂的非结构化数据通过向量化,处理统一成多维空间里的坐标值。

传统数据库,无论是关系型数据库还是后来的NoSQL数据库,本质上是在处理字符,它并不关心字符的真正含义,即语义。比如,传统数据库在进行搜索时是基于关键词的精确比对。如果有两个词虽然语义一样,但词不同就不会作为查询结果返回的,而向量数据库能“理解”语义,因而可以避免这种情况的出现,这也是向量数据库可以同时懂中英文、可以支持多模态的关键。

“懂”语义这一点非常关键。比如,我们想找一本书,不知道书名,只记得其中一个片段的,借助向量数据库的搜索就可以找到,而传统数据库就很难做到。

要让计算机真正“懂”语义就需要把词汇向量化,也就是嵌入(Embedding)。不同数据类型存在不同嵌入方法,例如文本嵌入将文字转换为向量;图像嵌入将图片转换为向量;音频嵌入将声音转换为向量;视频嵌入将视频转换为向量。嵌入的背后也需要人工智能技术的支持,需要大量的计算,因此向量数据库本身也是人工智能技术催生的数据库类型,依托人工智能技术的进步而普及。目前,一些大模型厂商提供嵌入技术,比如OpenAI、Hugging Face等,也有很多开源方案。

我们使用向量数据库最主要的目的是要对外交付查询结果,这就需要向量搜索技术。向量搜索是向量数据库的另一项关键技术,也是“懂”语义的关键。向量搜索利用神经网络模型,将存储的向量采用 K 近邻法(KNN)或近似临近算法(ANN)等各种方法,计算目标对象与数据库中向量的距离,从而得到查询结果。通常采用余弦距离、欧氏距离等方法以表示两者的相似度,并按照向量的相似度进行排序,返回结果。同关键词搜索相比,向量搜索能够实现对语义更为精准的理解,在多模态、不同语言等环境下能够输出更为准确的结果。

当然,向量数据库中的关键技术也不少,除了向量嵌入和搜索技术以往,还有索引技术。它的作用和传统数据库的索引一样,通过构建高效的索引结构来实现快速的向量检索。

大模型的“黄金”搭档

向量数据库之前一直不温不火,正是生成式AI,更准确地说是大模型给向量数据库带来了机会。今天,一些向量数据库也全面转向了服务大模型,比如Milvus就明确表示大模型已经成为其主要业务。

向量数据库之所以备受推崇,是因为它可以被广泛地用于大模型训练、推理和知识库补充等场景,不仅可以支撑训练阶段海量数据的分类、去重和清洗,给大模型的训练降本增效,还可以解决大模型面临的幻觉问题等诸多问题,是大模型的“黄金”搭档。

众所周知,“一本正经地胡说八道(即幻觉)”是大模型面临的一大挑战,而通过向量数据库可以将确定的约束条件和规则保存在数据库中,在提出问题先到向量数据库中把相关信息提取出来作为提示条件,和问题一起给到大模型,就可以确保大模型生成内容的合理、合规。

类似的,向量数据库还可以帮助解决大模型在时间和空间上的限制。大模型通常涉及几百亿甚至更多的参数,训练时间以月计,使用的GPU卡上万张,一次训练成本可能高达数百万美元之多,即使是微调成本也非常高,因此大模型的信息无法保持最新,限制了其在一些场景中的使用。比如,ChatGPT的数据就截止于2021年,不久前刚宣布的腾讯混元大模型数据截止于7月。而借助向量数据库可以把最新的信息保存向量数据库中,通过大模型加实时更新的向量数据库可以解决数据更新的问题。

向量数据库+大模型还有一个经典的应用场景是私域数据或者敏感数据的利用。大模型一般是通用模型,使用的都是公开数据。然而,企业通常都有大量本领域和本企业的专有知识,这些知识是企业的宝贵资产,不能公开。此时,也可以通过将这些知识存储在向量数据库中,在提交问题给到大模型之前先查向量数据库,然后将查询结果和和问题一起提交给大模型,既保证了数据的隐私性,也解决数据的利用问题。 

因此,向量数据库也被称为大模型的“海马体”或者“记忆海绵”。它作为大模型的外脑参与问题的回答,来解决大模型预训练成本高、没有“长期记忆”、知识更新不足、提示词工程复杂等问题,加速大模型落地行业场景。

要专用向量数据库还是传统数据库加向量支持?

随着生成式AI应用的日渐普及,市场对向量数据库的需求一定越来越强烈。但这种能力并不一定非要向量数据库才能提供,部分传统数据库也能提供这些能力。

实际上,今天具有向量存储和处理能力的传统数据库并不少见。比如,PostgresSQL就通过开源插件pgvector来支持向量数据类型。pgvector支持建立 IVFFlat 索引,利用 IVFFlat 算法预先计算 ANN 的结果,牺牲计算的准确性换取性能。

阿里云的PolarDB和AnalyticDB也都提供了对向量数据类型的支持。PolarDB的pase插件能将非结构化数据根据特征提取成为一串向量, 然后根据向量进行距离计算, 得到最相似的向量。阿里云的数据仓库AnalyticDB PostgreSQL 版有一个全自研向量引擎,通过一条SQL即可完成结构化数据分析、向量检索,实现多路结果召回的全场景覆盖。

NoSQL数据库也积极引入向量数据类型。MongoDB的云版本Atlas就新增向量搜索引擎功能。在Atlas上开发人员可以使用他们习惯的工具、语言和库来存储向量并进行向量搜索,从而完成文本搜索、图像搜索、比较以及高度个性化的产品推荐等。类似的, DataStax也宣布在Cassendra中添加了对向量数据类型的支持,能提供向量搜索的能力。

可以预计,不用太长时间,还有更多传统数据库都将提供这些能力。由此就产生了一个问题:既然传统数据库也可以提供对向量的处理能力,还需要专用的向量数据库吗?答案是取决于应用需求。一般而言,专用向量数据库面对的大数据量、对性能有着极致需求以及复杂的业务需求,而传统数据库毕竟是对向量的支持是附加的,在性能上和功能的完整性上与专业向量数据库还是存在差距,因此各自有着不同的适用场景。

不过,对于大多数普通企业,从能管理向量数据的传统数据库入手,必要时再升级到专用向量数据库是一个不错的选择。既能延用以前的技术栈,不会带来新的管理复杂性,同时也等尽早享受到大模型和生成式AI的技术红利。