去评论
dz插件网

腾讯云向量数据库,让我眼前一亮

左右不逢缘
2023/08/11 06:55:01
下午看到一条让我兴奋不已的消息:腾讯云发布了自己的向量数据库。按说向量数据库现在已经不再是什么新鲜事物,但这款产品着实还是很惊艳,因为它集成了 Segment(文本切分)、Embedding(向量化)等服务,最高还支持每秒百万的查询量。光说这些名词你可能没有什么感知。举个例子,今年大模型火了之后,很多公司的应用场景是像 ChatPDF 那样,基于私有数据做一个问答机器人——扔几个文档进去作为输入信息,然后问问题,请机器人回答。按说最直接的做法是把文档内容喂给大模型,但这并不现实。一是大模型对输入的内容长度有限制,二是我们也不愿意把自己的重要数据给到大模型。于是就引入了一个重要角色:向量数据库,它相当于应用和大模型之间的桥梁。向量数据库和大模型的配合流程可以参考下面这张图:

第一步,先把文档内容,按照某个方式进行切分也就是 Segment,然后 Embedding 生成向量,存入向量数据库。第二步,根据用户的问题到向量数据库做相似度匹配,找到对应的文本块。第三步,把问题和文本块一起组装为 Prompt,调用大模型的接口,拿到答案。之前,要做这样的一个应用,还挺复杂的。我们得考虑文本怎么切分,文本的切分质量直接决定了回答质量。切分后还要调用大模型的 Embedding 接口,返回向量,再存储到向量数据库中。总之,就是需要在大模型和向量数据库之间来回倒腾数据。而现在,基于腾讯新发布的向量数据库 Tencent Cloud VectorDB,我理解开发流程将会大大简化。因为向量数据库本身就有 Segment 和 Embedding 的能力,我们不再需要考虑向量层面的细节问题,通过自然语言就能直接和向量数据库交互。什么意思?也就是说,我们可以直接把文档扔给数据库,大段文本的切分,以及文本向量化,VectorDB 会帮我们处理。我们也可以直接把问题扔给数据库,请他来查询相似度较高的文本块,问题向量化以及检索的细节,VectorDB 会帮我们处理。简直太酷了,我感觉就是一站式的向量检索方案。大模型火了之后,很多向量数据库创业公司都获得了新融资。做电商也好、做推荐也好,随着数据量的增加,传统的关键词搜索已经不能满足需求,语义匹配的搜索变得越来越受欢迎。尽管这个技术一开始主要是被大公司和使用机器学习的团队使用,但随着大型语言模型的出现,它变得更容易推广给普通的应用开发者。随着大模型技术的发展和应用,我们不难想象到,向量数据库很可能像传统的关系型数据库那样,成为重要的基础设施。我们都知道,大模型是预训练模型,对于训练截止日之后发生的事情一无所知。而向量数据库则可以通过存储最新信息后给到大模型,类似 New Bing 那样。另外,向量数据库也可以规避企业担心的数据泄露问题,企业可以把核心的业务数据放到向量数据库中,而不是直接扔给大模型。说实话,现在市面上的向量数据库挺多的。既然向量数据库这么重要,那如何选择向量数据库呢?上个月,我曾经向圈内资深的朋友请教过这个问题。他认为可以从三个层面考虑。第一层是基本功能。与传统数据库相比,向量数据库存储的是向量数据。它需要支持向量的存储和相似度检索。存储和检索看起来简单,但想做好挺考验产品的基本功,比如检索时,是否支持主流的算法,以及检索的质量如何?第二层是单 QPS 的访问成本。毋庸置疑,随着用户量的增多,向量数据库的性能将会越来越重要。而衡量性能的一个核心指标就是单个 QPS 消耗多少资源。资源也就是成本。比如高并发的场景下,想从 10 亿张向量化的图片中返回查询结果,并把延迟控制在毫秒级,需要什么样的存储和 CPU 成本?第三层是易用性。对于一款产品而言,易用性尤为重要,这直接决定着应用集成 AI 的效率。比如能否直接使用自然语言和向量数据库交互,能否内置类似关系型数据库中排序、求和、聚合之类的函数?

从这个角度看,腾讯云数据库确实是不错的选择。除了刚才提到的易用性外,我查了下,腾讯云向量数据库的底座是腾讯集团每日处理千亿次检索的向量引擎 Olama(原来叫 ElasticFaiss)。Olama 已经应用在了腾讯视频、QQ 浏览器、QQ 音乐等 30 多款产品中。这也意味着,它的基本功能和性能已经在内部得到了检验,毕竟那些产品用户量都过亿了。
腾讯云的这款向量数据库会在 8 月发布。墨问团队到时候准备体验下,摩拳擦掌。好东西,也分享给你。