各行业的公司越来越认识到,制订数据驱动的决策是现在、未来 5 年、未来 20 年乃至更永劫光内竞争的必要条件。数据增长(尤其是非构造化数据增长)达到了前所未有的水平,数据泛滥和人工智能时期已经来临。
这一现实隐含的是,人工智能可以对海量数据进行故意义的分类和处理——不仅对 Alphabet、Meta 和微软等拥有弘大研发业务和定制人工智能工具的科技巨子是这样,对普通企业乃至中小型企业而言也是如此。
精心设计的基于人工智能的运用程序可以极快地筛选极其弘大的数据集,以产生新的见地并终极推动新的收入来源,从而为企业创造真正的代价。但是,如果没有新涌现的新事物——向量数据库,任何数据增长都无法真正实现可操作性和民主化。
随着大措辞模型的爆火,向量数据库也成为了热门话题。只需几行大略的 Python 代码,向量数据库就可以充当大措辞模型廉价但高效的“外部大脑”。但我们真的须要一个专门的向量数据库吗?向量数据库究竟是炒作还是刚需?
近期,在北京 QCon 大会之际,InfoQ 有幸采访到了 Redis 高等架构师史磊,听他聊一聊 Redis 向量数据库技能实践。
在 9 月 3-5 日即将召开的 QCon 北京 2023 上,Redis 高等架构师史磊将带来以《搜索、探索、求索:Redis 向量数据库》为主题的演讲分享。会前,InfoQ 对史磊老师进行了专访,听他聊一聊 Redis 向量数据库技能实践。
以下为访谈实录,经编辑。
InfoQ:史磊老师您好,能先做下自我介绍吗?
史磊:我目前在 Redis 事情,担当高等产品架构师,卖力管理 Redis 在亚太区的技能事务。我的紧张职责是帮忙 Redis 客户优化他们的 Redis 实例,辅导他们在利用 Redis 的新功能时能够得到最佳体验;以及帮助 Redis 在中国的做事商取获胜利。
作为 Redis 原厂,我们掩护着开源社区版,并且供应了企业版(Redis Enterprise)的软件。在亚太区,越来越多的客户开始理解 Redis 企业版的代价。然而,目前大多数人对 Redis 的理解还勾留在开源版本或者一些经由修正的第三方版本上,对付 Redis 的核心功能和运用处景可能理解有限。因此,我紧张的义务是帮助客户更好地利用 Redis 供应的工具,办理实际问题,知足业务需求。
我在去年加入 Redis,之前我在新加坡从事科研事情,后来在一家金融科技创业公司卖力开拓 AI 产品。在那个公司,我已经利用 Redis 大约七八年韶光,但紧张限于开源版。加入 Redis 原厂后,我更深入地理解了 Redis 企业版,节制了更多强大的功能。我希望借助自己的履历,帮助客户充分发挥 Redis 的潜力。
InfoQ:您是什么时候开始关注向量数据库这个领域的?
史磊:在加入 Redis 之前,我紧张从事 AI 和大数据方面的产品开拓。我阅读过特色天生、存取办法以及实时 AI 处理等领域,并利用了许多工具。然而,直到我加入 Redis 原厂,我才真正理解到 Redis 也在向量数据库方向供应支持。Redis 的这种布局实际上已经有一段韶光了。
我们最初是通过一个搜索模块来支持搜索功能,这个模块从大约 2018 年开始就存在了。Redis 2.0 的搜索功能将其提升到了一个新的水平,使其更加随意马虎和方便。从 Redis 2.4 开始,也便是去年 3 月份开始,我们正式支持向量搜索。在大型措辞模型引起轰动之前,Redis 就已经开始在向量数据库领域布局。由于 Redis 在各行业广泛运用,一经推出向量搜索功能,环球范围内的许多客户就开始利用了。
随着大型措辞模型的兴起,向量数据库的运用进入了新的阶段。起初,人们可能只是用向量查询来处理大略的图片、视频、音频或文档等内容,提取和搜索一些基本的向量特色。但随着大型模型的遍及,人们开始探索如何更好地利用向量数据库,将其运用到更高的维度、更广泛的范围以及更快的要求速率上。对付一个向量数据库而言,以前大家的认识更多是小众、性能哀求不高,而现在这些不雅观念正在被快速转变。在这个过程中,Redis 经历了很多磨练。作为一个向量数据库,随着大型模型的兴起,许多核心企业运用,比如像 ChatGPT、OpenAI 这样的运用,开始在后台利用 Redis。这使得 Redis 在知足客户需求方面有了更多的互助机会。
同时,Redis 的搜索模块也在不断发展壮大。我们通过网络来自客户的第一手资料,产品团队将客户在实际运用中碰着的需求以及在 AI 和大数据环境下的新需求,迅速转化为产品,更好地为客户供应做事。
Redis 向量数据库技能实践InfoQ:我把稳到您提到了 ChatGPT 和 OpenAI,他们已经在利用 Redis。那他们是否将 Redis 作为唯一的向量数据库利用?这方面有哪些信息可以分享吗?
史磊:根据我理解,ChatGPT 和 OpenAI 并不仅仅利用 Redis 作为唯一的向量数据库,他们也在与其他向量数据库互助。由于技能的更新和迭代非常迅速,Redis 已经成立了专门的团队来卖力向量数据库的研究和开拓,并与多个不同的企业互助。
在 Redis 的官网上,我们已经展示了与许多 AI 大模型领域的互助案例,包括与 ChatGPT 等的互助。然而,详细细节和哪些实际用例正在利用 Redis,以及它们的详细情形,由于这些领域变革迅速,以是我目前没有最新的干系信息。
InfoQ:您之条件到的是在 2018 年,Redis 引入了向量搜索的模块。当时详细是什么情形?我们是基于客户需求开拓这个功能的吗?还是我们自己看到了这个大的趋势?
史磊:从 2018 年开始,Redis 引入了一个搜索模块。当时,这个搜索模块紧张支持标量搜索,而不是向量搜索。在那时,Redis 利用中的一个痛点是,只管它是一个内存中的键值存储系统,查询时如果不逐个扫描每个键,就没有很好的方法来根据查询条件检索数据。
因此,2018 年的版本紧张是为理解决搜索这一痛点。它许可用户在 Redis 中存储大量的键,而且这些键的检索速率非常快。但是,如何在这些键中快速找到知足特定条件的数据呢?通过内部迭代和升级,从 1.0 版本到 2.0 版本,我们网络了许多客户的需求。这些需求紧张集中在如何快速创建索引、如何快速实行查询,以及如何让运用程序自动完成这些操作。2020 年我们推出的 2.0 版本中就着重于这些方面。随后,在 2.4 版本中(从去年 3 月开始,在 ChatGPT 等大模型盛行之前),我们正式引入了向量搜索功能。在这个过程中,我们收到了许多客户的要求,他们问是否可以将 Redis 的快速标量搜索扩展到向量化数据的搜索。我们的产品团队听取了这些客户的需求,在初期支持了基本的向量相似性搜索功能。
随着韶光的推移,我们不断地加入各种主流搜索模式和算法,逐步完善这个功能,使其变得更加成熟。现在,Redis 在 7.2 版本中进行了重大更新,带来了许多新功能。值得把稳的是,我们不再将搜索作为一个模块进行推广,而是将其视为 Redis 供应的紧张功能之一。这意味着 Redis 不仅可以用作缓存和主数据库,还可以用作向量数据库。
InfoQ:随着功能的增加,Redis 的定位也发生了一些变革?
史磊:是的。最初,Redis 的产品定位确实是作为一种内存数据库,专注于供应内存存储,并通过模块来扩展其功能。然而,随着韶光的推移,我们对 Redis 进行了重新定位。现在,我们供应了 Redis 企业版软件,将所有功能集成在个中。只要利用 Redis 企业版,就能够得到全部功能,无需额外购买或支配特定组件,即可直策应用。
对付客户而言,如果他们已经在利用 Redis 作为缓存,他们现在只需将向量存储到 Redis 中,便可以直接进行向量搜索。这对客户来说非常直不雅观且易用,同时也不会增加额外的系统繁芜性,无需引入其他产品或功能。
InfoQ:我想理解一下关于这个模组研发进程的情形,以及它在研发过程中所经历的一些迭代。此外,当它与 Redis 数据库结合时,是否碰着了什么问题?如果有技能上的难题,您是如何办理的?能先容一下干系的技能实践过程吗。
史磊:Redis 在不同领域的广泛运用匆匆使我们从各个领域网络了对 Redis 搜索的需求。起初,有客户提出了希望在内存中进行向量搜索的需求。我们负责谛听了这些客户的见地,并动手实现这个功能。
在实现过程中,从初始的 POC(Proof of Concept)项目开始,我们将这个功能作为一个附加组件添加到 Redis 中。随着韶光的推移,我们将它演化成了 Redis 的主推功能。在这个过程中,Redis 的主产品与我们的模组功能相互协同进化。举个例子来说,Redis 企业版在办理日常运用中的痛点方面拥有许多特性,比如内建的强大代理(proxy)。这个代理能够自动将要求导向相应的分片,不管是单一分片还是集群模式,从而担保了 Redis 的存储和吞吐量能够自动调度,无需额外干预。对客户而言,借助内建的代理,可以简化业务逻辑,无需关心是单一模式还是集群模式。这同时也办理了搜索的难题,由于 Redis 每个分片是单线程模式,如果要求集中在一个分片上,性能会受到影响。但如果利用集群模式,客户端须要掩护连接并理解每个分片上的数据,这会使得业务逻辑变得繁芜。
企业版办理了这些困难,同时也使得搜索更加随意马虎。在 Redis 集群版中,由于已经内置了代理,搜索要求能够自动分配到各个分片上实行,并以最低的本钱整合结果。这确保了 Redis 在搜索中不再受制于单一分片的性能,同时供应更大量、更快速的搜索。这种搜索的扩展性和速率得益于 Redis 企业版内置的代理。
在开拓 Redis 搜索过程中,由于须要掩护额外的数据构造,如索引,我们的产品团队进行了优化,确保快速的分配和查询这些构造,使得 Redis 企业版性能比开源版有了显著提升。
此外,我们正在推出的企业版本中,包括最新的 7.2 版本,已经引入了预览版的功能。在搜索方面,我们办理了每个分片上搜索仍旧受限于单线程限定的问题。通过多线程办法,我们实现了同时搜索,这在测试中已经实现了超过 10 倍乃至 16 倍的性能提升。这也解释了搜索有许多方法可以进一步优化性能,这是一个不断进化和不断完善的过程。
InfoQ:把上述功能融入到 Redis ,赋能 Redis 数据库,韶光上花了多久呢?
史磊:这项技能的演进过程从最初的谈论到研究,再到研发,以及现在的预览版功能,经历了相称长的韶光。根据我理解,这个功能的实际测试韶光至少超过一年,从最初的谈论到实际测试的过程确实须要一段韶光。而在方案和履行这些功能之前,所花费的韶光绝对不止一年。
Redis 的产品团队投入了大量的韶光和精力,乃至设立了一个专门的团队,卖力确定 Redis 作为向量数据库须要实现的功能。这个团队须要思考有哪些核心组件可以完成这些功能,还须要与其他团队互助。全体过程须要跨足多个团队的互助,因此这是一个长期发展的过程。
InfoQ:鉴于大模型如此受欢迎,以及数据库的主要性,您是否认为在这个人工智能与大数据的时期,数据库变得尤为主要?是否必须要研发新的数据库,以知足不断增长的需求?
史磊:我认为现在的向量数据库已经成为刚需,由于它办理了传统数据库无法办理的几个核心问题。传统数据库紧张基于关键词进行精确搜索,即存在或不存在的模式。而向量数据库供应的是近似搜索,当我供应一张图片、一段笔墨或者一个语音时,它能够找到相似的匹配项,而不仅仅是 0 和 1 的结果。它通过打分机制给出近似值,这是传统数据库无法实现的。
同时,传统的关系型数据库的索引方法也无法直接适用于现在的向量数据库。由于在底层,包括打算、数据存储以及运用层面,向量数据库与传统数据库完备不同。起初,向量数据库可能只是作为关系数据库的一个补充。然而,随着大数据、大模型和人工智能的发展,对付向量的存储和查询以及快速性能都提出了更高的哀求,只有向量数据库才能够知足这些哀求。
向量数据库的需求会持续上升吗InfoQ:未来向量数据库的需求会持续上升吗?
史磊:我认为这是一个持续上升的过程。随着大模型的兴起,对向量数据库的需求不断增加。许多传统的向量数据库也在不断进行迭代和更新,一些以前不支持向量数据库的产品也在声称自己支持,不断地添加这一功能。因此,这种需求将持续存在,这是一个不断洗牌、淘汰不敷的过程。
InfoQ:目前有一些人认为未来的每个数据库都会自然而然地、本地支持向量嵌入和向量搜索。您对这种不雅观点有何意见?如果这种趋势确实涌现,它会对向量数据库行业产生什么影响,可能会有哪些积极的方面,或者可能会带来哪些寻衅?
史磊:从技能角度来看,险些任何存储系统或查询系统都可以通过添加功能来支持向量搜索、查询或存储。从这个角度来说,技能上并没有问题。然而,在实际运用中,我们可能会逐渐趋向于一种或两种常用的类型,其他的办法可能会逐渐淘汰。只管它们都是数据存储或数据库系统,但它们通过不同的方法来知足索引和查询的需求。传统的数据库很难直接支持向量查询,由于在底层设计上缺少对向量查询的有效支持。只管可以通过添加功能来实现,但这可能变得笨拙且不足便捷。
新兴的向量数据库可能更适应当前的需求,但它们可能会引入系统的繁芜性。例如,客户可能须要同时利用传统数据库、关系数据库和向量数据库,这会增加掩护、本钱和开销。因此,我们须要找到一个良好的平衡点,一个别系既能知足向量数据库的哀求,同时也能知足传统查询功能的需求。找到这样的组合是关键。作为客户,如果能够利用一个别系来高效地完身分歧类型的功能,而不是选择传统系统再其余添加功能,掩护本钱和各种本钱都会降落。
在这种情形下,我认为 Redis 可以很好地实现这种平衡。Redis 不仅是广泛利用的运用,作为企业版,它还供应了完全的企业级运用生态系统,可以帮助客户知足各种需求。无论是向量搜索还是标量搜索,在 Redis 中都因此 key-value 的办法存储在内存中,查询效率都很高。此外,Redis 还具有强大的稠浊查询功能,许可同时查询向量和其他类型的数据,如文本、数值或 GPS 信息。这种原生的稠浊查询功能使得 Redis 在向量数据库领域具有显著上风,同时保持高性能。
AIGC 浪潮下,开拓者该如何“武装”自己?InfoQ:作为一个在数据库领域有多年履历的老师,您认为现在程序员如果希望在 AI 和向量数据库领域发展,须要节制哪些关键技能呢?
史磊:当前技能的迭代速率极快,去年利用的产品和履历可能在今年已经变得过期,或者新的技能已经呈现。在这种情形下,我认为首先我们须要更深入地理解现有系统。以 Redis 为例,大多数人可能知道它在缓存方面表现出色,但除此之外,Redis 在其他领域的运用可能并不为人所知。作为技能从业者,理解主流产品的底层架构和功能,以及它们能够实现的功能非常主要。
我们须要不断地更新知识,尤其是在向量数据库和大模型等新兴技能兴起之后。作为技能职员,要积极拥抱新技能,深入理解它们的事情事理和运用处景。不是从已有技能跳跃到崭新的技能,而是要利用自身积累的履历,将新技能运用于现有的事情中。虽然这种技能转换是存在本钱的,但我们须要找到最有效的方法来将转换本钱降至最低,让技能为我们做事,而不是成为技能的奴隶。这须要履历、技能洞察力和不断的探索精神来实现。
未来向量数据库市场会正向地“卷”InfoQ:老师的话确实给了我们很有代价的启迪。末了,我们可以磋商一个广泛受关注的话题,即向量数据库未来的发展。当前,向量数据库已经进入了热门阶段,许多干系技能也变得非常成熟,包括向量索引和传统数据库技能。然而,人们普遍关心的是,未来的发展将会走向何方,以及我们该当关注哪些趋势?
史磊:根据我的个人不雅观点,结合我多年来在 AI 和大数据领域的履历,以及对传统数据库的理解,我要说,几年前我无法预见到数据库领域能够如此迅速地发展至今的程度。
在向量数据库方面,我认为它的涌现受到了强烈的驱动力,这种驱动力能够快速淘汰那些不得当的技能,同时也会匆匆使新技能的不断呈现,这是一个逐步筛选的过程。从长远来看,我坚信向量数据库将不断成熟,同时也会为不同的运用处景供应更加精准的向量搜索结果。
以一个大略的例子来解释,我们可能须要实时、快速的搜索,也可能须要大规模特色搜索。在未来,这些需求可能会逐渐演化身分歧的维度。我相信会有一些特定领域的向量数据库逐渐崭露锋芒,可能会呈现出一两个或者更多的适应特定场景的数据库类型。每个类型可能会在特定的领域得到优化,这将是一个整合与优化的过程。
InfoQ:未来向量数据库会不像传统数据库那样,在海内呈现 200 多家出来?
史磊:我认为数据库市场的持续扩展是不可避免的,这紧张是由于技能的迭代速率非常快,同时技能门槛也在逐渐降落。当前存在着大量的需求,这将吸引越来越多的数据库乃至向量数据库加入竞争。然而,从业界角度看,这种市场扩展是有利的。它可以匆匆使更多的技能和业务参与,只管市场在一定范围内会有限定,但这将在一场竞争中筛选出更精良的技能和解决方案,以更好地知足需求。
我希望看到更多竞争者呈现在这个领域,同时也期待看到哪些技能能够经受住运用的磨练,证明自己在实践中的可行性。对我而言,这种市场扩展应该是良性的。我们不肯望看到恶性竞争,也不应该是通过贬低其他运用来凸显自身的优胜性。我认为这对付行业的生态是不利的。相反,我期待一种良性竞争,让人们有更多优质的选择,从而推动全体领域的进步。
高朋简介:
史磊,现担当 Redis 高等架构师 (Senior Solution Architect),致力于利用 Redis 企业版为客户供应产品架构方案咨询及设计、性能优化、Redis 技能的运用及推广等做事。他拥有超过十年的软件架构设计开拓、大数据系统调度及优化、打算机视觉、金融科技人工智能等方面的产品及技能研发履历,拥有八年多的 Redis 开拓、运维及利用履历。在加入 Redis 之前,他曾任新加坡某金融科技创新公司的人工智能架构卖力人(Head, AI Architect)、新加坡国立大学数据科学研究所 (Institute of Data Science, NUS) 首席架构师等职位。
读者福利