目录 封面故事 两个多月完成全自研:大模型之争,从GPU卷到了向量数据 库i 重磅访谈 越来越“卷”的文生图模型,如何在中文世界“杀”出一条路?1 桌面QQ重构,探寻跨平台开发挑战与Electron内存 优化突破13 中国最大公有云服务商,如何从零开始构建一支云效团队24 管理与研效 MySQL之父:不要把一个优秀的开发者提升为管理者,那会 是种资源浪费40 传统管理秩序消失,数字化下的组织和人才如何重塑42 第一批因AIGC裁掉自家员工的老板该后悔了?58 如何利用AIGC自动化编程提高研发效率?67 封面故事 两个多月完成全自研:大模型之争,从GPU卷到了向量数据库 采访嘉宾:罗云、邹鹏、杨亚洲作者:冬梅 在大模型爆火之前,国内向量数据库赛道略显荒芜,市场上独立开发向量数据库的厂商只有个位数。 这是因为向量数据库的应用场景比较单一,大多用于推荐、图搜图等场景中,因此在AI技术没有取得突破性进展之前,向量数据库一直不温不火,这种状态直到去年ChatGPT问世后才有所改变。 去年10月,OpenAI发布了智能聊天机器人ChatGPT,随后短短几天内注册用户就突破上亿人,一时间,与AIGC等大模型相关的技术成为了VC眼中炙手可热的投资项目。 从目前VC的投资数据来看,投资者对于AI的关注点主要有三个:第一个是基础大模型LLM,第二个是具体某个场景的应用(包括小模型),第三个就是基础模型与应用层之间的中间层(开发者工具和数据库等)。 随着各种AI应用诞生,中间层已经成为各大VC争抢的投资标的,早期默默无闻的向量数据库一跃成为当下最大的一个热门,各数据库厂商摩拳擦掌都想在这一垂直赛道分一杯羹。机构观点认为,AI大模型或催生向量数据库应用骤增,向量数据库或迎重 要发展机遇。 最近,腾讯云团队也正式发布了专业型向量数据库(TencentCloudVectorDB),InfoQ有幸采访到了腾讯云数据库团队,与他们一同探讨了腾讯云向量数据库背后的故事以及他对于向量数据库现在所面临的挑战和未来发展趋势的思考。 定调数据库,从拥抱开源到发展自研 “走了不少弯路,也踩过很多坑,但最终还是遇见了星辰大海。” 2010年,腾讯这家千亿巨头还埋头在自家地里辛勤耕耘,QQ空间等一众应用的爆火,让腾讯的服务器忙得不可开交,为了承接住如此高并发的流量洪潮,腾讯在短短一个月内额外购买了上千台服务器。 但流量不会永远停在峰值上,当流量回落后,闲置的服务器就造成了资源的浪费。 另一方面,应用的爆火也为腾讯下游的小程序和游戏方们带去了巨大的流量,但他们有限的服务器无法承接住如此庞大的流量洪流。 天下苦服务器,久矣,腾讯说,别急,服务器我有。 找上门的生意没有不做的道理,就这样,2011年左右腾讯开始筹备组建一支十几人的云团队,将内部技术能力以产品和服务的形式对外销售,当时他们做了一个产品,叫OpenCloud(开放云),这就是后来腾讯云的雏形。 有了一众明星级应用等加持,腾讯云团队的技术实力很快得到了市场的认可,同年年 底,腾讯就已经积累了近3000家客户。 云计算是一个人力密集型的赛道,需要投入大量人力才能把客户维护好。就这样,为了更好地支持腾讯云业务,腾讯深圳大本营分别在深圳、北京和杭州扎了根,随后扩展到了成都等多个城市。 随着OpenCloud打磨了云技术的底座,腾讯成立了独立的云计算品牌腾讯云,正式开启了公有云的万里征程。 担任腾讯云数据库副总经理的罗云,就是腾讯云业务团队的创始成员之一。 据罗云介绍,从2011年开始做云业务至今,整个团队经历了多次方向上的调整,直 到2017年看到国产数据库这个大趋势后,成都团队才定下调来主攻数据库赛道。 与很多互联网公司不同的是,腾讯初始的业务发展并未对数据库有过强依赖,腾讯内部没有去IOE的过程。 一开始,腾讯云数据库建设主要引入了当时业界较为主流的开源数据库,如MySQL、Redis、MariaDB、PostgreSQL等。随后针对云上客户定制需求,腾讯云在数据库中衍生研发了如数据库并行复制、审计日志、在线加字段等核心功能,并计划逐步将以上功能回馈给MariaDB和MySQL社区。 随着腾讯云数据库积累的客户越来越多,客户的需求越来越定制化且应用场景更加复杂,在业务倒逼之下,从2012年开始,腾讯云研发了适配内部业务自研数据库TDSQL,此后又推出多款自研数据库TDSQL-C、TBase等产品。 在习惯了Oracle、MySQL等国外十分成熟的数据库后,客户对新兴数据库产品的要 求很高,既要求高并发、高可用、低延迟等高性能,还要保证数据持久化,因此对团队的技术水平要求极高。 罗云举例称,“在数据库每次热升级时,要做到让用户无感是非常困难的。在断开又重连的过程中,我们的团队能做到秒级别的抖动。因为我们在数据库的内核上做了很多工作,比如做了两层架构,软件的第一层叫proxy(接入层),下面有cache(存储层),我们通过一些逻辑使这两层叠加后就可以实现做业务替换时让客户毫无感知。” 为了应对高性能和数据持久化的要求,腾讯内部还100%自研了KeeWiDB数据库,这是一款完全兼容Redis协议的新一代分布式KV存储数据库,实现了数据的冷热分级,满足业务高性能、持久化、低成本、大规模的四大诉求,这也为后面腾讯自研向量数据库打下了坚实的技术基础。 此外,腾讯云与中科大联合撰写的论文PLIN:APersistentLearnedIndexforNon-VolatileMemorywithHighPerformanceandInstantRecovery已被数据库国际顶会VLDB收录。 两个多月做完一款自研数据库 在大模型浪潮爆发后,腾讯云在一众大厂中抢先发布了自己的向量数据库产品。据悉,整个产品从立项到最终完成产品化仅用了不到3个月的时间。 之所以能如此快地推出这款产品,罗云表示,这主要得益于两方面:一个是云团队内部多年的技术积累;另一方面是这个团队中每个人都是能打“硬仗”的好兵。 去年年初,随着ChatGPT的爆火,国内“百模大战”趋势日渐明显。腾讯云也在思考从哪个方向找到突破口切入到大模型“军备竞赛”中。随后到了3月份,ChatGPT发布了一个叫“Plugin”的插件功能,Plugin的标准案例中提到向量数据库是大模型产品中必不可少的一个组件。因为当前的大模型都是预训练大模型,它能够学到的数据只是公开数据,更多的企业私有数据和实时数据大模型是学不了的。 既无法学习实时数据,又学不到企业私有数据,这是预训练大模型在时间和空间上的两大限制。基于这个逻辑,大模型一定会需要一个外部的“海马体”,也就是存储组件来存储这些知识。 另一方面,市场上很多做大模型的企业也在向腾讯云团队寻求一款企业级的向量数据库产品。 就这样,在加深了对大模型的探索和对行业有了更清晰的认知后,腾讯云团队认为向量数据库是一个必须要做并且要赶紧做出来的产品。 对齐了需求后,就来到了执行层面。摆在腾讯云面前的第一个选择就是到底要做什么类型的向量数据库类型,究竟是做插件式还是自研? 出于市场需求侧的压力,腾讯云想快速推出一款产品,所以刚开始也考虑了用RedisSearch插件式的方案来做产品。但经过调研发现,这种全内存的方案成本太高,这也腾讯云坚定了要做自研的决心。 据腾讯云向量数据库产品负责人邹鹏介绍,腾讯云向量数据库真正立项时间是在5月中下旬,随后技术团队就着手调研研发方案了。既然时间如此紧迫,那不如从腾讯的内部项目中考察是否有能够匹配得上的产品,这样是最高效的解决方案。 邹鹏认为,做一款云数据库最核心的两大要素就是管控和内核:管控是指要给数据库做一些功能,把它产品化,就比如数据库的控制台上一系列可操作的功能;内核就是数据库数据层面的东西。 在管控层面,通过多年的技术积累,腾讯云沉淀出了一个比价成熟的云原生管控平台 ——云巢,这是一款PaaSonIaaS方案,自2019年上线后一直稳定地为所有腾讯云数据库产品服务。 在内核层面的选择上就要比管控层复杂一些。因为腾讯集团内部有多款数据库内核可供选择,究竟该选择哪一款就是个问题。 经过调研后,腾讯云数据库团队认为,使用规模和体量最大的向量引擎Olama是向量数据库内核的最佳选择。 QQ、QQ空间、腾讯视频、腾讯新闻这些业务场景中都会涉及推荐、搜索等向量技术,也从一定程度上验证了Olama的技术实力。此外,Olama采用了比较前沿的分布式的、Raft架构设计,这种架构设计逻辑也更偏向于数据库的架构逻辑,且易于维护。更重要的是,Raft架构在弹性上也设计得非常灵活,它甚至能够做到表级别的资源扩展。 邹鹏称,在和PCG团队沟通后,了解到他们也有非常强烈的上云需求,两个团队一拍即合,管控层和内核层全部尘埃落定,这个项目基本上已经完成了大半。 Olama和云巢都是腾讯集团内部非常成熟的产品,如何高效强执行的将两者融合在一起的过程中还是给团队带来了一些挑战。 整个团队花费时间和精力比较多的工作在接口和协议的处理上。由于Olama和云巢此前都是腾讯内部自用的产品,它们接口的一些功能设计无法友好地对外服务,因此需要进行重新设计接口,这是对内核改造最大的一部分工作,也会占用一些新的研发资源并加大在这方面的投入。 经过了两个多月的摸爬滚打后,腾讯云向量数据库现已在官网上线。 要想做出一款好产品,仅有技术上的积累是不够的,背后团队的技术实力也同样重要。 罗云称,“数据库是个比较卷的赛道,没有最卷,只有更卷。在这么短的时间内推出上线一款全新的自研数据库,对团队成员来说是不小的挑战。但我们的工程师都是很‘能打’的。” 提交千行MongoDB代码被采用,做数据库没有最卷、只有更卷 2022年下半年,腾讯云MongoDB专家工程师杨亚洲在帮助一家头部金融企业维护数据库时发现,他们单个数据库集群数据量很大,达到几百上千亿条。会不定期出现性能抖动,有时延迟也比较大,抖动高的时候甚至都可以达到秒级别。 MongoDB本身是个分布式、无限量扩容的数据库,但如果硬件资源不足,又数据量过大的情况下,业务访问就会可能会产生抖动。抖动原因是集群大、数据量多了过后,路由信息会很多,路由变更的过程中,如果资源不足,就可能会产生抖动,而这样的抖动和延迟可能会影响客户的业务。 杨亚洲认为,当时这家头部金融企业用的是腾讯云MongoDB数据库,该金融客户遇到的问题在腾讯云线上MongoDB中也同样会遇到,腾讯团队从一切为了客户的角度出发,借助自身对MongoDB深厚知识迎难而上,决心既要为客户消除这个可能影响业务的抖动,又避免传统单纯扩容增加用户的成本。“为了从根本上解决问题,于是我花了近三个月的时间,分析造成问题的原因和解决问题的技术瓶颈到底是什么,通过底层代码优化调整,然后彻底把问题解决掉了”,杨亚洲表示。 解决掉这个问题后,腾讯云数据库团队向MongoDB官方提交了一个1000行的patch,最终该patch被他们接受了并收到了MongoDB官方的感谢。 向量数据库是风口,更是刚需 “专业的向量数据库需要有长时间的积累和投入才能做得出来,但相应的它的天花板也更高。” AIGC技术迎来大爆发后,国内外科技公司纷纷推出自家大模型产品,这一波浪潮把向量数据库这一原本没那么火爆的赛道推到了聚光灯下。 向量数据库本质有三种形态:第一种是纯单机向量数据库,它不是分布式的;第二种是在传统数据库上加上一个具备向量检索能力的插件;第三种是独立的、专业的企业级向量数据库。 目前国内的许多企业并没有采用专门的向量数据库,而是在原来传统数据库上增加了一项向量检索能力,也就是上述提到的第二种形态。从表面上看,独立的、专业的向量数据库看起来并不是那么刚需,但事实的确如此吗? 这就要从传统数据库和向量数据库的区别来看了。传统数据库和向量数据库的主要区别在于它们的数据存储方式、数据规