向量数据库内核面临的技术挑战及应对措施
最近一年,以 ChatGPT、LLaMA 为代表的大语言模型的兴起,将向量数据库的发展推向了新的高度。
向量数据库是一种在机器学习和人工智能领域日益流行的新型数据库,它能够帮助支持基于神经网络而不是关键字的新型搜索引擎。向量数据库不同于传统的关系型数据库,例如 PostgreSQL,其最初设计用于以行和列的形式存储表格数据。它也明显不同于较新的 NoSQL 数据库,例如 MongoDB,其主要是将数据存储在 JSON 文档中。
向量数据库是为存储和检索一种特定类型的数据而设计的:向量嵌入。它们本质上是机器学习过程的推理部分中运行新数据的过滤器。
在大模型部署中,向量数据库可用于存储大模型训练产生的向量嵌入。通过存储代表大模型广泛训练的潜在数十亿个向量嵌入,向量数据库执行最重要的相似性搜索,找到用户提示(他或她提出的问题)和特定向量嵌入之间的最佳匹配。
虽然目前业内很多关系型和非关系型数据库已被修改为存储向量嵌入,但它们最初都不是为了存储和提供此类数据而设计的。那么,原生地支持向量嵌入地向量数据库的内核是如何设计的,这类向量数据库与其他插件版向量数据库的区别是什么?向量数据库的研发过程中有哪些技术难题?带着这些问题,我们邀请到了北京阿哇科技的创始人李洁,与他一起探讨向量数据库内核面临的技术挑战及应对措施。
以下为访谈实录,经编辑。
InfoQ:很高兴邀请到李洁老师来到《极客有约》栏目,首先请李洁老师介绍下自己吧。
李洁: 大家好,我是李洁,曾长期在互联网公司从事向量数据库、底层核心系统及引擎的架构设计和研发工作。之前在京东,带领团队在 2019 年开源了业内首个向量数据库 vearch。目前,我专注于面向大模型和 AIGC 场景的新型向量数据库项目,名为 AwaDB。
这个项目已经开源:https://github.com/awa-ai/awadb,欢迎有兴趣的朋友们前来了解。
InfoQ:我了解到您之前在京东带领团队从 0 到 1 做出了开源向量数据库 vearch。老师能介绍一下 vearch 项目的一些背景吗?
李洁: 我们开始这个项目挺早的,大约是 2017 年底,我们着手于一些以图搜图的应用场景,很多现有的向量数据库也主要是以视觉为出发点。我们解决了京东的一些搜图场景,构建了一个十亿规模的向量数据库,主要在京东的一些场景中使用,特点之一是毫秒级的更新。由于京东每天上架大量商品,需要即时展示商品图片,因此实时性成为了一个重要问题。
于是在 2018 年,我们在国际顶级中间件会议 ACM Middleware 上发表了一篇论文,随后决定继续深入探究这个方向。在处理图片时,我们将其转化为嵌入向量,通常使用 VGG 或 ResNet 等模型进行转换,实际图片搜索系统底层的存储和索引都是在处理向量,因此,我们开始关注嵌入向量的存储和检索,调研了许多相关领域,发现向量召回在搜索、推荐、广告以及人脸识别、安防等方面都有应用。基于这些发现,在 2019 年 4 月,我们正式启动了这个项目,将图片搜索进一步抽象提炼,打造成了一个向量数据库。最终,在 2019 年 9 月,我们将该项目开源。
总结起来,这个项目的背景源自京东内部的需求。我们从自身场景出发,逐步将需求进行了抽象提炼,形成了一个与时俱进的向量数据库。这个过程是从需求到场景再到抽象的演化过程。原本的图片搜索项目从 2018 年开始进行了大半年的开发,同时,我们内部还有另一个数据库系统,也经历了一两年的发展,最后将这两个系统进行了融合。
InfoQ:可以讲一下为什么选择将这两个系统融合,而不是京东其他的系统?您是看中了这两个系统的哪些方面?是架构吗?还是其他方面?
李洁: 这个问题非常值得探讨,我们当时团队内部也进行了深入讨论。最初,我们拥有一个专注于图像搜索的分布式系统,但该系统在元数据管理和弹性扩展方面表现不够出色。同时,我们还有另一个系统,是一个多模态数据库,这在当时是非常前瞻性的。
我们的团队成员,包括领导一起,就这个问题进行了充分讨论。我们发现,那个多模数据库在元数据管理和分布式扩展方面表现相对较好。而在向量引擎方面,图像搜索系统做得更出色。事实上,我们的图像搜索系统对于一些特定场景的向量引擎表现非常优异,我们曾对这个系统进行了一些深度的定制,以满足特定需求。举个例子,当时我们发现在某些图片搜索的场景中,除了基本的向量检索外,还存在一些更细致的需求。京东拥有 10 亿规模的商品图片,进行全库检索非常耗时。为了避免不必要的搜索开销,我们在一开始就引入了标量字段过滤,将这一策略融入了向量引擎中。
另外,在向量引擎方面,我们还进行了大量自主研发,包括与英特尔的深度合作,以满足人脸识别等领域的高召回率和高精度需求。在分布式元数据管理和扩展性方面,图像搜索系统又确实投入不够,存在一些局限。因此,我们决定将这两个系统融合在一起。其中一个系统在分布式扩展方面表现优异,另一个系统在底层的向量引擎方面表现出色。通过将两者最优的部分相结合,创建了一个更强大的系统,这种融合能够更好地满足我们的业务需求。
InfoQ:两个系统融合在一起的时候,你们内部做了哪些优化和迭代?
李洁: 在将这两个系统融合时,我们经过了多方面的内部优化和迭代,涉及许多关键点。例如:
语言和技术栈的融合:最初,这两个系统使用了不同的编程语言和技术栈,一个是 Python,另一个是 C++。我们进行了整合,使得不同的部分能够协同工作。特别是在引入分布式部分时,我们将 Go 语言与 C/C++ 进行了结合。
功能迭代和测试:我们首先着手开发核心功能,并进行了多次迭代。每个新功能都经过了严格的测试,确保其性能和稳定性,以满足实际生产环境的需求。
性能测试与负载压力:我们进行了大量性能测试和负载压力测试。为了确保系统能够承受生产环境中的工作量,我们使用了一些有趣的技巧,如使用 spark 大数据集群跑任务方式模拟实际压力。
插入和检索的测试:在测试过程中,我们重点关注了数据插入和检索的性能。这两个操作在实际应用中非常重要,因此我们确保系统在这些方面表现出色。
总的来说,我们进行了很多细致的工作,将两个系统相互融合,并确保融合后的系统在性能、稳定性和功能方面达到高标准。这个过程涉及多次迭代和测试,确保我们的向量数据库能够在实际场景中得到有效应用。
InfoQ:做这个项目的时候整个团队有多少人?
李洁: 当时有大概 8~10 个人。
InfoQ:多模态数据库加上这个引擎以后,整个性能是怎么样?
李洁: 原先的多模态数据库的宏大构想虽然多样且宏伟,但在实际落地时,数据库领域的通用性是一个挑战。不同类型的数据库,如时序数据库等,都有其特殊的要求和场景。甚至有讨论是否应将向量数据库与传统数据库合并,这是一个复杂的议题。
我们之前也曾考虑过创造一个通用的数据库,但实际上这并不容易。各个数据库领域的需求差异较大,这导致通用数据库难以满足所有情况。因此,我们决定将两个系统融合,专门构建一个面向向量的数据库。这样的结合使我们能够更精准地满足特定的需求,而不必力图创造一个通用性极高的数据库。
新系统在分布式扩展方面的能力无疑得到了大幅提升。与原图片搜索系统相比,新系统在性能和效率方面也得到了显著提升。经过压测,我们的系统性能至少提升了 50% 以上。
InfoQ:开源的原因什么呢?
李洁: 当我们在 2019 年选择开源这个项目,确实是因为这个领域的工作相对较新,尤其从全球的视角来看,还是非常新颖的。尽管我们在 2019 年时已经从零开始构建了内部系统并成功迁移到新的 Vearch 系统上,但是我们意识到新系统的潜力,希望将向量数据库的能力赋能给京东的多种场景,并且希望能够在业界引起一些关注。
在推动开源的决策中,我们考虑了多个因素。首先,这是为了在行业中传播这项新技术,从而推动整个领域的发展。对于我们内部而言,我们认为将这项新技术分享出来,不仅可以在京东内部进行推广,还可以为整个产业做出贡献,形成互相影响的良性循环。
虽然我们内部有一些工作需要处理,但许多大型公司都会面临类似的情况。大型公司常常涉足创新性的领域,但这些创新需要时间来打磨和应用。开源项目的出现可以丰富各种应用场景,推动产品的更快迭代,这也是开源的一个重要意义所在。
李洁: 当时的应用场景与 ChatGPT 出现之前相似。大多数向量数据库主要关注视觉领域,涵盖图像、视频、音频的搜索推荐,包括以图搜图、广告推荐等。同时,在中国市场,安防领域非常重要,还存在一些独特的端到端的应用场景。
InfoQ:目前,市场上对向量数据库的关注非常高。许多国外的数据库厂商也获得了大量融资,可见这一领域的吸引力。不过,也有一些人对向量数据库持不看好的态度。有声音认为,我们不必专门开发一款纯粹的向量数据库,而是可以在现有数据库的基础上添加一些层,赋予其向量检索的能力,以应对当前的业务需求。您对于这种观点是如何看待的呢?
李洁: 实际上,这取决于使用方式。对于简单的用户和场景来说,这种方法是可行的。然而,考虑到 AI 场景和产业需求,情况可能有所不同。AI 领域的迭代非常快,随着数据量和应用场景的增加,传统数据库可能不再适用于高要求的计算密集型场景。
要分析这个问题,需要从以下三个方面考虑:
首先,向量数据库场景通常不需要事务。传统数据库主要用于交易场景,而向量数据库则专注于非事务性场景。
其次,向量数据库是计算密集型的。它涉及多种算法,如 KNN 和图算法,需要高性能计算能力。传统数据库在计算方面要求较低。
第三,数据库的发展应该基于场景需求,而不是仅仅为了数据库本身。目前向量数据库的热度与 AI 的发展密切相关,AI 领域迭代快速,与传统数据库不同,需要快速响应变化。
综上所述,传统数据库与向量数据库在场景和需求上存在矛盾。随着 AI 的进一步发展,特别是在复杂场景和大数据量下,向量数据库可能成为解决方案。我认为这是问题的核心所在。
InfoQ:实际上,我们的向量数据库在大模型或 AIGC 时代变得至关重要,它绝对是不可或缺的。它远不仅仅是将传统数据库添加一个分层来满足技术发展需求这么简单。
李洁: 当前阶段 AI 的应用还在初级阶段,这是事实。实际上,重要的是传统数据库无法对数据内容进行深入理解和分析。传统数据库主要处理结构化的字段,而现在的 AI 浪潮正致力于理解数据内容。无论是嵌入还是应用于 GPT 等,人工智能的关注点在于深入理解数据内容。
传统数据库并没有这种功能,AI 持续快速发展,场景将变得更加丰富多样,数据内容将变得更为复杂且广泛。对于非结构化的数据内容,比如语音、视频等,在 AI 的推动下将变得更有价值。之前人工智能可能无法充分挖掘和理解这些非结构化数据内容的价值,而现在则为其提供了更多可能性。
李洁: 我实际上最近几年一直在从事向量数据库工作,在这个行业里积累了一些经验。尽管我主要在大公司工作,可能没有单独创业,但一直深耕在这个领域,积累了丰富的经验,对这个行业有一些深刻的理解,多年来一直看好这个方向。
我认为人工智能对数据内容的理解能力是非常重要的,这也是传统数据库所不具备的。随着人工智能的不断发展,这方面的需求会不断增加。虽然没有预料到人工智能的发展会如此迅猛,但坚信投身于这个方向是值得的。因此,在未来的某个时间点,我决定会走出来,参与其中。当然,现代技术的进步总是让人有些意外,就像 ChatGPT 这样的大型模型突然崭露头角,很多人都没有预料到会这么快。
总之,我一直在行业中积极探索,对人工智能的前景持乐观态度。相信这个方向会有巨大的发展,而我也希望能在其中发挥一定的作用。
InfoQ:创业后在技术上有哪些新的感悟吗?
李洁: 在大型企业内,通常会更加深入地专注于单一技术领域。这是因为大公司通常处理着海量的数据,比如在京东,我们的数据规模至少达到了 10 亿级别,并且需要每天进行多次更新。这种背景下,大公司拥有一些关键优势,例如更加实际的场景经验,比如 vearch 就在京东参与了许多大型促销活动,如 618 和双十一。
但事实上,大公司的线上环境常常更加严格和紧张。对于开源社区来说,问题可能仅仅是一个 issue 或者一个 bug fix,但在线上环境中,这些问题可能会导致系统崩溃,甚至带来大量流量损失或 GMV(交易额)损失。因此,在大公司,对技术细节的深入要求非常高。
然而,当你走出大公司之后,会发现面对的场景与之前有所不同。你可能没有那么多的数据可用,但你有更多的探索空间和想象空间。你可以进行各种各样的创新尝试。然而,这也带来了一些挑战,尤其是商业化方面的挑战。你需要捕捉需求,与竞争对手,包括大公司和创业公司,进行差异化竞争。
虽然 GPT 等大型模型已经问世,但我认为 AI 的持续落地与应用场景上仍然存在很大的发展空间。在实际操作层面上,我发现在大公司,人们往往会更加注重沟通协作,有条不紊,因为资源较为丰富。而在创业公司,资源相对有限。创业初期的资源更有限,无论是在资金还是人力上,都无法与大公司相媲美。因此,在有限的条件下,你需要充分利用资源,发挥多方面的才能,尤其是认知,灵活性和执行力。
创业涉及到众多方面,而不仅仅是技术和产品。你需要成为多面手,拥有出色的执行力。这是一个综合素质的考验,需要在各个方面都保持较高水平的表现。
InfoQ:创业新孵化的数据库项目叫 AwaDB,这个项目是怎么从 0 到 1 完成的?
李洁:AwaDB 是一款面向大模型 /AIGC 场景的 AI Native 新型向量数据库。事实上,现在所从事的工作与我之前的经验是有一定延续的。在京东期间,我 lead 了多个从 0 到 1 的创新型核心系统及引擎的研发,其中包括 Vearch 项目。Vearch 在生产环境打磨近 4 年,在高可用、高性能和低成本方面有一定的保障。我们是站在已有的基础之上进行创新,因为一些轮子已经造好了,没有必要重新去造。
但在 ChatGPT 问世之后,向量数据库场景发生了较大变化,技术要求也提升了。之前的模式可能是以 API 为中心,但现在可能需要更加灵活地应对各种复杂场景,比如与向量嵌入结合更紧密、与 LangChain 这种大模型应用框架交互、与大模型交互等等,这也是向量数据库们普遍面临的挑战之一。因此,AwaDB 结合大模型 /AIGC 落地场景需求,在用户体验上做了较大的改进,能让用户迅速地在 ChatGPT 等场景中得以应用,目前已经与 langchain, llama_index 等流行的大模型应用框架集成,与大模型及其生态无缝衔接,开箱即用。在用户体验的提升改进过程中,对向量引擎内核也做了一些重大的改进及增强,比如增加了文本过滤功能,标量字段行存变列存等等。
InfoQ:您提到了一个当前非常热门的话题,即“AI native”。Awadb 项目是否属于 AI native,什么样的数据库才算是真正的 AI native?
李洁: 我个人理解,AI Native 主要是指与大模型能够无缝衔接,快速使用大模型的 AI 能力。我们的 AwaDB 项目,可以在端上(如 Mac 或 Linux)通过简单的 pip install 快速运行。同时,它与大模型以及️ LangChain 插件之间的结合也非常紧密,让用户能够迅速而轻松地使用,而无需进行繁琐的部署。
相比于以往,如今我们只需 5-8 行代码就能构建一个与大模型交互的应用,让用户能够快速上手,测试验证及使用大模型。总之,我认为所谓的“AI native”,就是像人类与大模型之间的自然流畅互动,要非常简单和快捷。
InfoQ:您能跟我们讲讲这个项目面临哪些技术挑战,最终是怎么解决的吗?
李洁: 首先,我认为在这个领域,关键点是要将问题放回到实际应用场景中进行考量,要了解人工智能领域,特别是以 AI native 的方式来思考。这并不仅仅是基础架构,而是涉及到更多的技术栈,涵盖诸多方面,如嵌入、微调等。虽然这些领域与向量数据库的落地看似不太相关,但事实上,在构建向量数据库时,对这些领域的理解非常关键,否则很难与大模型进行有效的结合。
其次则涉及到向量检索的核心技术。虽然人们经常提到各种检索算法,但是在我们多年的经验中,这方面也存在许多挑战。例如,在上线生产环境后可能会遇到成本问题,索引也是一个关键问题。向量数据库的索引不是统一的,而是适应不同数据场景的多样索引,如量化索引、图索引等。不同的索引参数会影响性能和资源利用情况,需要仔细调整。事实上,解决向量数据库的高性能和低成本并不容易,需要考虑大量参数和专业知识。
InfoQ:除了技术问题,人才也是比较关键的问题?
李洁: 与大模型领域有些相似,目前对向量检索领域知识非常熟悉的相关人才是不足的。为什么呢?因为之前向量数据库的使用场景还没有完全爆发出来,导致很多人更倾向于使用简单的解决方案或其他方法。在 ChatGPT 火爆之前,向量数据库算是一个小众领域,行业内并没有多少人愿意投入进来。
InfoQ:做向量数据库的人需要同时具备 DBA 和 AI 的能力,很难找到将这两者结合起来的人才。
李洁: 目前是这样,很多系统工程师一提到向量数据库,开始可能会感到有些茫然。稍微了解一点,似乎觉得门槛不高,但实际上要深入做起来,你会发现其中涉及的知识还是相当多的。比如向量嵌入,这个对于一直从事这个领域或者从事 AI 的人来说很熟悉,但对于系统方面的人可能会陌生。因此,向量数据库实际上就是一个系统与人工智能相结合的一个交叉领域。
InfoQ:开发者如果想往这个方向发展需要提升哪方面的技能?
李洁: 我认为最重要的是首先要深入了解人工智能(AI),至少要了解一些与 AI 相关的知识。只有站在不仅仅是系统的角度来看待问题,才能真正理解它。因为向量数据库的爆发与人工智能的爆发密切相关,只有随着 AI 应用场景变得更广阔,向量数据库才能有更大的发展。
另一方面,从 AI 工程师角度来看,他们可能能够为向量数据库提供一些真实的建议。往往站在实际场景的角度,他们更能够理解需要什么样的向量数据库。然而,同样重要的是,你必须站在系统的角度来看待问题。因为无论如何,最终还是需要查询和存储,需要考虑高并发、低成本等因素。这些方面,你也需要对系统有所了解。
李洁: 首先应该选择一个 AI Native 的向量数据库,用户体验及与大模型 AI 能力结合更方便快捷,节省时间精力。其次看功能点是否满足自身诉求。第三点就是在稳定性有保障的前提下,应该结合企业自身数据量级,在延时,成本以及召回精度等方面去综合考量选择。
InfoQ:既然向量数据库也属于数据库的一种,那么在处理数据时,它肯定也会面临一些数据安全和合规性方面的挑战。就当前的向量数据库而言,如何有效处理这些问题?
李洁: 传统数据库中的权限控制是可以借鉴的。不过,在向量数据库的情境下可能稍有不同,因为我们面对的是与人工智能相关的场景。这些场景涉及许多私域数据,包括文本、图片和音频等,都与数据内容有关。在与大模型交互时,例如使用查询与模型进行交互,这些查询可能与私域数据有关联。
私有化部署是常见的做法。但是,考虑到通用解决方案,可能会使用云服务,包括公有云,这就可能引发数据泄露的问题。这个问题同样适用于大模型的落地,因为数据部分通常与大模型协同工作,辅助其落地。在这种情况下,私域数据可能会被提取出来,用于与大模型进行请求。
我与业内相关大模型专家讨论过这个问题,有人在探讨一些解决方案,比如类似于矩阵加密,然后在接收端进行解密。但是,目前大家都在不断探索。我认为隐私计算的需求可能会相当强烈。也许会出现类似于联邦学习的方法,以很好地解决这些隐私问题,因为只有这样才能从根本上解决这个问题。
InfoQ:业内目前没有一个普遍公认的比较好的方式来解决这个问题?
李洁: 是的,据我目前了解,大家普遍认识到这个问题。但是目前还没有一个明确的解决方案,可能这主要是因为整个产业和生态系统对于人工智能的应用和落地,还处于探索阶段。虽然大家意识到这个问题的重要性,但还没有完全深入到解决的细节。
确实,私有化部署可能是一个选择,但这也会导致资源的浪费。并不是一个很经济的解决方法。在云上部署可能是更节省资源、更环保的选择。然而,这种方式可能需要解决私域数据与大模型之间的隐私问题,以及与服务相关的一系列挑战。如何在保护数据隐私的前提下实现这些目标,是一个非常值得探索的方向。
InfoQ:有观众想了解京东的开源数据库 vearch 和 AwaDB 之间的关系,可以给我们介绍下吗?
李洁:Vearch 聚焦于生产环境,强调高性能、高并发和低成本,它在大数据和大流量场景下得到了一定的打磨验证。AwaDB 基于 Vearch 核心向量引擎进一步创新发展,是一种 AI Native 的新型向量数据库,与大模型生态结合紧密,langchain 或者 llama_index 等流行的开源大模型应用框架下可以开箱即用,用户体验良好,更为灵活轻量,可以在端上直接使用,非常便捷,另外,在提升用户体验的过程中,AwaDB 在底层向量引擎内核也做了一些重大的改进及增强,比如增加了文本检索过滤功能,标量字段行存变列存等等。
InfoQ:AwaDB 与其他向量数据库相比的优势有哪些?
李洁: 首先,AwaDB 是一个 AI Native 的新型向量数据库,与大模型 /AIGC 生态结合紧密,方便易用。其次,AwaDB 的核心向量引擎基于 Vearch 多年生产环境的打磨,在高可用,高性能和低成本方面有较强的保障。最后,AwaDB 将聚焦大模型 AI 应用的落地流程,期望整合一个通用的智能解决方案,来辅助大模型实现将专家知识资源从领域中高效,节省地提取出来。
InfoQ:AwaDB 后期的规划方便透露一下吗?
李洁: 我们重点聚焦在大模型应用落地场景。通过专注于大模型的场景,我们可能会发现一些新的属性,原本可能是视觉场景,现在我们关注的是文本,还有一些其他方面,比如不同数据量的处理和 embedding。在不同的领域,embedding 也会有所不同。未来底层向量引擎方面也将会有重大更新,尽请期待!
李洁: 我认为在这个领域,强调要深入了解 AI 是至关重要的。目前数据的价值之所以突显,很大程度上归功于大模型的能力。大模型是人工智能的关键基础能力之一,因其推动了人工智能的重大突破。因此,我们应密切关注大模型的发展趋势,它与向量数据的走势息息相关。我们需要了解大模型可以实现什么,哪些方面可能做不到,或需要付出更多努力来解决。
这也解释了为什么向量数据库领域突然变得热门。因为大模型在某些情况下可能会出现一些误差或记忆问题,这就需要我们更多地参与其中,投入更多的精力。随着大模型的进一步发展,尤其是在编程方面,可能会带来更广泛的应用。当我们更广泛地应用这些技术时,人工智能就会真正落地,进入每个人的生活。
InfoQ:未来数据库的发展趋势是逐渐向 AI 方向靠拢吗?
李洁: 在我看来,情况可能会是这样的:大约在 2020 年左右,我们已经看到传统数据库开始应用人工智能的方法进行优化。首先,AI 的方法被用来帮助数据库进行性能优化,甚至在领域调优方面也开始应用一些 AI 算法,使数据库的运作更加智能化。这是一个发展方向。
另一个方向是,数据库可能会更加朝向人工智能发展。我了解到,许多传统数据库都在考虑加入人工智能插件,因为 AI 时代的突破开创了一个新的起点,人们自然会朝着更前沿的方向不断迭代。这种插件功能的加入在一定程度上是可行的,因为在传统数据库中加入这些插件能够满足某些需求。然而,未来数据库要想做得更好,随着 AI 迭代的进程,对数据的要求会越来越高,这一点也是不可否认的。
InfoQ:您认为向量数据库会是 AI 的“iPhone 时刻”吗?
李洁: 我对此持不同意见,觉得有些夸张了。向量数据库依然是在大模型、人工智能的支持下发挥作用,它的许多能力仍然是依赖于 AI 大模型的能力而产生的。就说实话,这些能力的涌现很大程度上还是源自于 AI 模型的支持。然而,我倒认为我们当前的向量数据库在这个大模型时代、淘金时代扮演着重要角色,就像一把好的铲子一样,有助于挖掘出宝贵的资源,这是我个人的看法。
实际上,大模型在一定时段内可能无法解决所有问题。虽然有些大模型的创建者相信通用人工智能(AGI)会到来,我本人也坚信 AGI 的到来,但我认为这个时间点不会这么快。因此,在这个阶段,我们需要着手将大模型应用到实际中,让其具备非常智能的能力,可以进行对话,解决问题等。
因此,大模型的应用落地变得尤为重要。在这个过程中,我们会发现仅仅依靠一个大模型解决问题可能会比较困难。这就是为什么向量数据库变得重要,因为在大模型普及的背景下,借助大模型的能力会产生许多应用,如文本、聊天对话、知识库等。我们的向量数据库就像是这个过程中的一把铲子,帮助挖掘宝贵的资源,就像从金矿中筛选出黄金一样。
然而,要做好这件事并不容易,因为首先你需要了解如何挖掘金矿,即了解整个流程。就像采金矿一样,需要一套标准的流程,你不能只是做好一把铲子,你还需要考虑如何做筛子,如何对资源进行更深入的处理。这是一个复杂的过程,需要深入的了解和努力。
InfoQ:听您的描述,似乎我们的向量数据库更像是为 AI 和大模型提供支持,协助它们完成各种任务。同时,我们的 AI 也在帮助向量数据库不断进化,逐步积累更多的 AI 能力,包括嵌入式算法、segment 算法等。那么,您认为在未来,向量数据库应该如何通过 AI 来进一步提升自身的能力呢?
李洁: 我们可以从向量检索算法的角度来审视这一问题。在向量检索算法领域,早在 1999 年就提出了高维向量检索的问题,引起了广泛关注。起初,针对高维向量的问题,一些算法如局部敏感性哈希(Locality-Sensitive Hashing,LSH)、KD 树(K-Dimensional Tree)等被尝试,但效果不佳。随着 2012 年 AlexNet 和深度学习的崛起,深度学习产生了大量的向量表示。于是,许多有监督学习算法被用于向量结构问题的解决,但很快发现有监督学习在通用性方面受限。这导致无监督学习方法的兴起,如图算法、聚类等。在不同的向量结构算法中,存在许多参数,如何通过 AI 方法将其优化到最佳状态也是一个重要问题。因此,我们可以探索使用 AI 来提升向量数据库的智能化程度。通过深入研究向量检索算法,我们或许可以找到更智能、通用的解决方案。
InfoQ:您这边用了哪些方式进行数据库调优?
李洁: 实际上我认为将一些像 OpenAI 的技术引入进来会是一个不错的选择,比如 OpenAI 可能有一些人工调节的技术,就像 OpenAI 可能会有一些反馈,甚至可能涉及到强化学习,通过人工标注来使其更加自然。另外,例如文生成方面的 Midjourney,默认提供了四张图片,是否一定要从中选一张呢?我认为这个给了我们一个启示,就是这是一个闭环过程,产生结果后,通过人工或其他方式给出优化方向。我认为这个向量数据库或许可以借鉴一下,可以采取类似的方法,比如你提供的答案是否优秀或者是不佳,然后这些数据可以被反馈回来,用于模型的训练,进一步完善这个系统。
InfoQ:我们再回答最后一个观众问题:“向量数据库是怎么结合大模型在端上运行的?”
李洁: 通常情况下,我们本地可能会拥有一些本地知识,比如一些文档之类的东西。然后,我们会对这些本地文档进行一些处理,例如切分,因为这些文本可能会比较长,需要进行分段。接着,对于每一段文本,我会使用文本嵌入(embedding)的算法进行嵌入,将每段话变成向量表示,然后将这些向量存储到向量数据库中。然后,在本地,你可能会对这些本地知识进行查询。比如,我有很多旅行行程,我想知道今天计划去哪里玩,我可能会输入一个自然语言的查询,这个查询会被嵌入成一个向量。
接下来,这个查询会从数据库中检索相关内容,找出几个相关的结果,然后组合成一个提示词的模板。现在很多应用都是这样操作的,类似的操作就是将这些相关内容组合成一个提示词,然后向大模型提问。举个例子,比如刚才提到的“我今天旅行去哪玩”,因为已经检索出相关的句子和段落,这些段落可能包含了之前的计划,然后这些计划会被输入到大模型中,大模型能够准确地提取信息。因为大模型具备一个非常重要的能力,就是对相关知识进行总结,提取摘要,然后能够精确地给出结果。
InfoQ:AwaDB 开源了,开源地址:https://github.com/awa-ai/awad,欢迎大家点 Star、提 Issue。感谢大家收看直播,我们下期再见。
你也「在看」吗? 👇
微信扫码关注该文公众号作者