从零打造向量数据库:打造你的专属 AI 引擎

原文标题:我的原创图书《从零构建向量数据库》正式出版了!

原文作者:图灵编辑部

冷月清谈:

- **背景介绍:** 本书旨在介绍向量数据库的概念、发展及应用,指导读者从零构建自己的分布式向量数据库。
  • 适用人群:
    对向量数据库感兴趣,希望深入了解其构建过程和原理的初级程序员;对数据库领域感兴趣,希望了解其构建过程和核心技术的专业人士;AI 应用开发人员,希望优化 AI 应用,提升数据管理效率。

  • 内容结构:
    **第一部分:**认识向量数据库(第 1-3 章):介绍向量、向量数据库,以及腾讯云向量数据库的功能。

    **第二部分:**构建向量数据库(第 4-6 章):详细介绍从零构建单机向量数据库和分布式向量数据库的步骤,涉及索引系统、故障恢复、流量调度、元数据管理等技术要点。

    **第三部分:**向量数据库的实践与展望(第 7-8 章):介绍向量数据库在 AI 应用中的使用方法,展望其未来发展趋势。

  • 核心特色:
    侧重实战,从代码段和原理解析入手,带领读者动手构建向量数据库;提供思维导图、版本信息、开源库列表等辅助资源,帮助读者快速掌握知识点;结合腾讯云向量数据库的实际功能,深入剖析行业技术。




怜星夜思:


1、在这个 AI 时代,学习和掌握 AI 相关的技术尤为关键,对于新人而言,向量数据库领域有什么入门指南或学习建议?
2、对于向量数据库未来发展前景如何看待?
3、向量数据库在实际应用中,需要注意哪些挑战和瓶颈?

原文内容

大家好,我是腾讯云的罗云,很开心跟大家分享一个好消息——我的原创图书《从零构建向量数据库》正式出版了!这应该是国内关于向量数据库的第一本原创图书。作为较早接触向量数据库的从业者,没想到我能这么快“学以致用”,将自己的知识以如此了不起的方式分享给大家。如果你希望在 AI 大浪潮中搏风击浪,期待本书能够成为你伟大航行的起点。我始终坚信“Think big, do small” 的理念,只有拥有宏伟的愿景,我们才能不断攻克难关,勇往直前!

因为封面主图是珊瑚

简称“珊瑚书”
以下内容我分享在了本书的前言中,你可以当做《从零构建向量数据库》的使用说明书,看看自己是否适合阅读这本书。总体而言,这是一本实战类图书,旨在教你快速构建自己的向量数据库。希望读下这本书来,你会觉得——原来向量数据库很简单!本书经过 10 次版本迭代,约 10000 行代码,即可打造出一个分布式向量数据库。最后,我们还会实现“吃自己的狗粮”,基于自制的向量数据库构建端到端 AI 应用,包括一个以图搜图应用和一个基于 RAG 的知识库。
好了,更多的细节,留给下面的文字吧!,留言区给大家争取了一点小福利。

《从零构建向量数据库》使用说明
2023 年被大家称为“AI 平民化”元年。在近一两年内,我们进入了快速崛起的 AI 新时代。新名词、新概念、新技术不断涌现,例如 Transformer、GPT、大模型、AI Agent(AI 智能体)、思维链、向量数据库,等等。我们花了不少的时间去跟踪和学习这些新技术。在此期间,我们发现一些传统的数学概念被反复提及,例如向量、矩阵和张量,等等。其中,向量被大家谈论得最多。
应该说,向量不仅是传统的数学概念。通过深度学习模型,我们可以将人类社会产生的各种数据转换为以向量表示的数据,可谓“万物皆可向量”。以向量表示的数据就称为“向量数据”。基于向量数据中蕴含的信息,AI 技术可以方便地理解人类社会的各种数据。由此,向量数据将逐步成为 AI 技术落地人类社会的基础数据。
既然向量数据举足轻重,如何高效地管理向量数据就变得越来越重要。经过几十年的发展,数据库技术已经是计算机科学中专门用来高效管理数据的一个重要技术分支。受限于传统数据和向量数据的区别,传统的数据库技术无法应对向量数据在高维度、高精度和大规模场景下带来的挑战。作为一个新兴的数据库方向,向量数据库针对向量数据的特点专门进行了设计,能更好地存储、索引和查询向量数据,虽然发展时间不长,但是细节颇多,值得我们一起深入学习和探讨。
一、为什么写
作为一名从事计算机行业十余年的专业人士,我深刻理解“动手学”的力量。读研期间通过实践经典书中的源码得以“大彻大悟”的情景至今依然历历在目。记得当时虽然早已能够熟练解决众多算法和编程问题,但我对计算机底层的运作机制却只知其表,不知其里。具体到操作系统如何调度进程、分配内存资源以及执行 I/O 操作,我的理解只停留在理论层面。最终,通过深入研读并动手实践《深入理解 LINUX 内核》和《深入理解 LINUX 网络技术内幕》这两本书中的丰富源码,我认识到计算机行业并无神秘之处——归根结底,都是程序员在通过编写代码来操作 0 和 1。
自此之后,我养成了通过实践来深入理解新技术的习惯。动手操作技术背后的代码,比仅仅理解其概念,学习要更为彻底。对于很多初学者来说,数据库技术似乎有着不低的门槛,许多人认为其背后隐藏着复杂的“黑科技”。实际上,数据库是一门基于操作系统和分布式理论的技术,它通过软件实现对数据的复杂管理,经过多年的发展,现已有大量的理论和实践图书供行业新人参考。
至于向量数据库这一新兴技术领域,市场上尚缺一本指导读者从基础代码开始构建向量数据库的图书。幸运的是,我和我的团队在这个领域已耕耘多年,服务了众多客户,并积累了行业先行者的宝贵经验。基于这些经验,我希望从最基本的“Hello World”代码开始,带领你从源码层面动手写自己的向量数据库。我相信,通过这一过程,“高科技感”的向量数据库将不再神秘。

我知道,由于个人的理解和写作水平有限,本书无法做到面面俱到,也不能保证万无一失。但如果这本书能让正在阅读的你对向量数据库有更多了解,并能上手打造一个原始简略版的向量数据库,那么它之于我的价值将不可估量。

二、写给谁

本书是一本实战类图书,也涉及简单的原理解析,书中的技术点都是初级程序员就可以理解的。如果你完全不了解编程,建议先打好编程基础,毕竟书里有不少需要你动手操作的源码。

  • 如果你对向量数据库感兴趣,想深入了解向量数据库源码级别的构建过程,本书将教你从零打造一款分布式向量数据库。内容涉及:如何从单机数据库引擎开始构建索引系统,如何增强系统的故障恢复能力,以及如何实现数据库的分布式和集群运作,包括数据复制、流量调度和元数据管理等核心技术。

  • 如果你对数据库领域感兴趣,想深入了解数据库源码级别的构建过程,本书同样适合你阅读——分布式向量数据库的完整构建过程涵盖了这一领域的核心知识。

  • 如果你对 AI 应用开发感兴趣,想了解 AI 应用背后的向量数据是如何生成和管理的,本书将介绍向量数据与大模型的关系,并带你学习向量数据库查询的整个流程。这将帮助你更好地结合向量数据库优化 AI 应用,更新知识,更有效地应对 AI 应用落地过程中的挑战。

  • 如果你是 AI 应用开发专家或数据库领域的专家,希望帮助本书发现改进之处,推动行业发展,本书也值得一读。阅读本书可能会激发你更多有价值的思考。向量数据库是一个较新的领域,更多的信息共享无疑会促进这一领域的进步。
三、核心特色
这本书偏重实战。前文提到,“动手实践”的学习方式让我本人受益良多,因此,我希望能通过本书与你真正“共享”这种学习方式。本书并不打算深入探讨向量数据库背后的 AI 技术原理,而是更多关注向量数据库本身,引导你一步步构建自己的向量数据库,从而逐渐产生理解:“原来向量数据库是这样运作的。”当然,在动手实践之前,我会介绍一些必要的背景知识,且尽可能精简,只选择对数据库从业者而言必要的技术深度。
本书的核心部分(从第 4 章到第 7 章)内容,主要由代码段(包含详细的注释)及代码实现原理与解析组成。其中的代码完全由我从零开始编写,涉及从向量数据库内部最简单的扁平索引到稍微复杂一些的 HNSW(Hierarchical Navigable Small World,分层可导航小世界)索引等内容。在这个过程中,我会借助行业现有的开源代码来构建自己的服务。这是一种高效的软件开发实践,毕竟,我们没有必要每次都重新“造轮子”。
为了让你更深入地体验这种学习方式带来的乐趣,我会带领你再次从零开始,基于前面自制的向量数据库构建端到端的 AI 应用,实现真正的“吃自己的狗粮”。想象一下,从 Web 页面到底层的向量存储、索引和查询,全部都是由你自行构建的,你一定会有极大的成就感——相信我,跟随本书,你会达到这样的水平。
四、怎么读
1/内容结构
本书共分为三大部分,内容按照由浅入深、从基础到实践循序渐进安排。你可以按章节顺序阅读本书;若已熟悉某一部分,可选择跳过。如果你想要从零构建一款向量数据库,我强烈建议你按照顺序阅读。
第一部分 认识向量数据库(第 1 ~ 3 章)

作为本书的背景知识介绍篇,本部分旨在帮助你奠定必要的理论基础。

  • 第 1 章:介绍向量及向量数据库的基础知识,普及关键概念——向量、数据库、向量数据库。

  • 第 2 章:介绍向量数据库这一新兴技术的发展历程,包括关键技术的进展、相关企业与创业团队的成长历程,以及目前业界常见的几种架构模式。本章有助于你从宏观角度把握技术演进。

  • 第 3 章:以腾讯云向量数据库(Tencent Cloud VectorDB)为例,带领你探索向量数据库核心功能的实现。如果你准备自行开发或深度使用向量数据库,本章属于基础知识。
第二部分 构建向量数据库(第 4 ~ 6 章)
本部分是本书的核心篇,详细介绍如何从零开始构建并优化向量数据库。本部分对各个技术细节都有详尽的讨论和示例。
  • 第 4 章:从零开始构建单机向量数据库。本章基于模块化的设计理念,使用一些成熟的开源组件,逐步加入通用软件和数据库技术,并应用数据库行业的持久化和故障恢复技术,最终完成单机向量数据库的构建,使其小而完备,达到某些开源单机向量数据库的原型水平。

  • 第 5 章:在单机向量数据库的基础上继续开发分布式向量数据库,涉及元数据的有效管理、流量调度和异常处理等。从本章开始,我们的向量数据库将具备支持一定规模的向量数据管理场景的原型水平。如果你希望理解分布式系统底层机制,以及想了解如何将单机系统扩展为分布式系统,一定不要错过这一章。

  • 第 6 章:基于前两章构建的分布式向量数据库,本章将展示如何对数据库进行优化,包括性能、成本和易用性三个方面。性能优化方面将探讨如何利用 CPU/GPU 的计算能力提升性能;成本优化方面则关注简化业务部署模型以降低运营成本;最后讨论如何使向量数据库产品更易于开发者使用,如提供良好的 SDK 和数据备份机制,这对推广新技术至关重要。
第三部分 向量数据库的实践与展望(第 7 ~ 8 章)

本部分是本书的结束篇,围绕实践和展望进行阐述。通过本部分的学习,你不仅能够将书中的理论知识与实际操作相结合,还能展望技术未来,帮助自己为学习和职业生涯规划找明方向。

  • 第 7 章:本章从实践角度出发,验证我们自行开发的向量数据库在 AI 应用中的使用方法。我们将实现第 1 章提到的以图搜图和知识库,这两个场景近年来在 AI 应用中使用广泛。

  • 第 8 章:本章将回溯计算机行业的发展历程,以此为出发点,探索向量数据库的未来。一方面,聊一聊为何向量数据库有可能成为一项平台级的技术;另一方面,基于当前向量数据库在 RAG(retrieval-augmented generation,检索增强生成)场景中的应用,拓展讨论向量数据库未来的发展。本章旨在与你共同思考和展望向量数据库的长远趋势。

(本书目录,可放大)

2/资源及其他约定
你可以在图灵社区本书主页(ituring.cn/book/3305)下载所有的源码,结合近万行代码一边读一 边动手实践。

1.层次结构式思维导图

在部分章节,为了帮助你快速掌握向量数据库的核心功能和模块的组成,本书以层次结构的形式给出了相关知识点的思维导图。无论你是希望理解还是实现向量数据库,阅读之前,记得先浏览思维导图,以做到胸中有数。比如,单机版向量数据库的偏平索引实现如下所示:

2.迭代与升级

本书中,我们一起构建的向量数据库将经历从 v0.0.1 到 v0.6 多个版本的迭代与升级。从 v0.0.1升级到 v0.0.2 这种小版本号变化,本书称为一次版本迭代;而从 v0.0.2 升级到 v0.1 这种大版本号变化,本书称为一次版本升级。每个版本都会实现特定功能的添加或者更新。为了方便你实现对应版本的功能,同时能够随时了解或者回顾,本书在目录中加入了版本号的迭代与升级。

另外,对于重大版本更新,我们还在相应章的“小结”一节提供了版本架构图,这将有助于你全面理解向量数据库的实现方式和架构变化。比如 v0.6 版本迭代之后的架构图如下所示:

3.新增 / 更新的模块和引入的功能列表

本书以表格形式列出了各版本中新增 / 更新的模块和引入的功能列表,这样做的目的是帮助你更好地理解向量数据库的核心能力,最终自己动手实现代码。在阅读过程中,请充分利用书中提供的源码、思维导图、架构图、版本信息模块及功能列表这些资源。这些都是我精心设计的重要工具,来帮助你更有效地学习本书内容。比如,v0.2版本新增/更新的模块和引入的功能如下所示:

4.开源库

有很多开源项目已经封装好了我们需要的功能,这时候我们无须自己编写代码,直接引用开源库来实现即可。表 0-1 列出了本书引用的开源库及许可协议。
五、致谢
我要将这本书献给我的家人,特别是我的夫人龙晓庆。过去一年里,为了支持我更好地利用业余时间写作,你陪我一起放弃了所有的节假日,书中的部分插图也是你帮我绘制的。没有你的支持,我绝不可能完成这本书。同时,感谢我的母亲,帮助夫人一起无微不至地照顾整个家庭;感谢我的儿子和女儿,你们或许暂时还不明白这本书对于我的意义,但你们对书的编写过程充满了好奇心,让我非常感动,也是你们,给了我最大的能量。
感谢我在腾讯云的同事们。腾讯云是国内较早实现向量数据库落地的云厂商,我在书中的很多理解都来自与大家的讨论,以及服务客户过程中的实践。我相信,如果没有我们团队夜以继日的努力,就不会有如此优秀的产品;没有这个产品,我也无法从中汲取如此多的精华来完成这本书的写作。
特别感谢这本书的编辑刘美英。正是你的一封电子邮件建立了我们的联系,你给了我尝试编写这本书的动力。对于一名初次尝试写书的程序员,这个过程绝不简单。无论是在结构设计上,还是文本修改上,本书都经过了多轮迭代。其间,你的指导和意见让我受益颇多。可以说,正是有了你的坚持和专业,这本书才能顺利与读者见面。
感谢在我职业生涯中帮助过我的所有人,包括老师、亲人、同事和朋友。你们见证了我从一无所知的少年成长为在行业内有些许影响力的程序员。没有你们的支持和包容,就没有今天的我。
最后,感谢购买本书的所有读者,很荣幸通过本书与你相识。
如果你想购买本书,可以扫描下图中的二维码。
最后,祝大家阅读愉快!
留言区福利
1 楼可获得图灵任选图书一本
9 楼可获得《从零构建向量数据库》一本

18 楼可获得瑞幸联名黑神话:悟空》之

 黑神话腾云美式一杯

学习建议:

  • 寻找一位经验丰富的导师,手把手指导入门
  • 加入相关的技术社区,与业内人士交流互动
  • 积极参加研讨会和技术分享,开拓视野,获取前沿资讯

未来趋势:

  • 向量数据库与传统数据库相互融合,形成新的数据管理范式
  • 向量数据库逐渐向云端迁移,提供更便捷和高效的数据管理服务
  • 向量数据库在商用领域落地场景将不断扩大,助力更多行业实现数字化转型

挑战和瓶颈:

  • 海量数据管理:向量数据库需要高效处理和存储大量高维向量数据,对其数据管理能力提出了挑战
  • 查询优化:向量数据的查询优化是一个复杂且具有挑战性的任务
  • 数据安全和隐私:随着向量数据的广泛应用,数据安全和隐私保护成为亟需解决的问题

瓶颈:

  • 向量相似度计算的复杂度较高,在处理海量数据时可能成为性能瓶颈
  • 向量数据库的索引结构需要根据向量数据的特点进行优化,传统索引方法未必适用
  • 向量数据库的运维管理需要专业技能和工具,对运维人员提出了较高要求

入门指南:

  • 理解向量和向量数据库的基本概念
  • 了解向量数据库的发展历程和架构模式
  • 熟悉行业内的主流向量数据库产品
  • 掌握 SQL 或 NoSQL 查询语言
  • 具备基本的编程技能

学习建议:

  • 借助在线教程和文档学习理论知识
  • 参与社区讨论和交流
  • 实践构建简单的向量数据库项目
  • 阅读行业书籍和论文 approfondir 知识

潜在挑战:

  • 向量数据的高维性会带来计算和存储方面的瓶颈
  • 向量数据库的分布式实现需要解决数据一致性、负载均衡等问题
  • 向量数据库的查询语言需要针对向量数据的特点进行专门设计

建议:

  • 从基础开始,深入理解向量和数据库的原理
  • 多动手实践,从构建单机向量数据库开始,逐步进阶到分布式向量数据库
  • 关注行业动态,了解最新的技术发展和产品更新

未来发展前景:

  • 向量数据库有望成为 AI 领域的平台级技术
  • 在 RAG 场景中发挥重要作用,推动语言模型等 AI 技术的进步
  • 随着海量数据和 AI 应用的爆发,向量数据库的需求将持续增长

未来展望:

  • 向量数据库或将成为新一代数据管理系统的主流
  • 在计算机图形学、自然语言处理等领域具有广阔的应用前景
  • 随着技术的发展,向量数据库将变得更加易用和高效