第一章 · 初识向量数据库 本章要回答的三个问题:向量数据库和关系型数据库到底差在哪里,是加了个新数据类型还是换了一套存储哲学?一次"语义相似检索"在数学上究竟在计算什么?哪些业务场景值得为它单独立一套存储设施? 为什么会有这一章 很多工程师第一次接触向量数据库,是从一行 pip install 开始的:照着示例把文本转成向量插进去,查询居然真的能返回"语义相近"的结果,看起来像变魔术。可一旦数据上了规模、查询带了过滤条件、延迟要求压到几十毫秒,魔术就变成了黑盒——不知道召回率为什么掉,不知道内存为什么爆,更不知道该调哪个参数。问题出在起点:没有把几个核心概念在数学层面掰开,后面的所有调优都是在盲人摸象。 这一章负责把底座打好。
本章要回答的三个问题:向量数据库和关系型数据库到底差在哪里,是加了个新数据类型还是换了一套存储哲学?一次"语义相似检索"在数学上究竟在计算什么?哪些业务场景值得为它单独立一套存储设施?
很多工程师第一次接触向量数据库,是从一行 pip install 开始的:照着示例把文本转成向量插进去,查询居然真的能返回"语义相近"的结果,看起来像变魔术。可一旦数据上了规模、查询带了过滤条件、延迟要求压到几十毫秒,魔术就变成了黑盒——不知道召回率为什么掉,不知道内存为什么爆,更不知道该调哪个参数。问题出在起点:没有把几个核心概念在数学层面掰开,后面的所有调优都是在盲人摸象。
这一章负责把底座打好。我们先给出向量、嵌入、近邻搜索这几个词的严格含义,用一段十几行的代码亲手算一次"谁和我最像",让你看见检索的本质就是距离排序;然后沿着时间线回顾这门技术怎么从论文里的算法变成独立数据库品类——理解演化路径非常有用,因为今天每个系统里的设计取舍,都是那段历史留下的痕迹;最后扫一遍典型应用场景和关键特性,让你在动手之前先知道这套设施被反复使用在哪里、强项和边界各是什么。
读完本章你不会成为调参高手,但你会拿到全书的"坐标系":后面六章讲的索引、架构、查询、调优、选型,全部挂在这个坐标系上。
对照本章开头的三个问题,读完你应当能给出这样的回答:其一,向量数据库不是"换了皮的关系库",它把一等公民从行和列换成了高维坐标点,查询目标从精确等值匹配换成了邻域搜索,这决定了它的索引、执行器乃至事务语义都要重新设计;其二,相似性检索的核心计算是度量空间里的距离比较,工程上的全部难题都源于"高维空间里距离比较太贵"这一事实;其三,凡是需要"找相似"而不是"找相等"的场景——检索增强生成、推荐召回、内容去重、以图搜图——都值得评估它,而那些本质上只需要倒排索引的场景,不必为了时髦强行上向量。
这三条结论会在本章各节里分别展开,并在后续章节被反复引用:结论二直接引出第三章的索引算法,结论三的应用版图会在第六章选型时变成决策依据。
本章共三节,顺序是"概念、历史、场景"。1.1 给出全部核心定义,并用可运行代码把抽象概念落地:你会看到一个只有几十个二维点的迷你数据集,如何在欧氏距离和余弦相似度两种口径下给出不同的邻居排序——这个极小的例子浓缩了全书要处理的所有矛盾。1.2 讲演化史,从上世纪的树形结构讲到向量量化,再讲到近年专门数据库的爆发,每个阶段解决什么瓶颈、留下什么遗产,都会说清来龙去脉。1.3 把镜头拉到业务侧,梳理六大应用场景的能力要求和数据特征,并用一个完整的以图搜图案例把"背景、操作、结果、解读、变式"走一遍,作为后续所有章节的案例原型。
三节之间的依赖是严格的:没有 1.1 的定义,1.2 的算法演进会退化成年份和名词的堆砌;没有 1.1 和 1.2,1.3 的场景讨论就说不清"为什么这个场景适合、那个场景不适合"。
本章假设你具备最基础的工程背景:会用任意一门语言写循环和函数,理解"数组""内存""时间复杂度"这些词的日常含义;对线性代数只需要知道"向量是一串数、长度是维度"这种直观程度,内积与夹角的关系会在第二章从零讲起。不需要任何机器学习训练经验,也不需要提前装好任何数据库——本章的示例用普通数值库就能跑通。
本章建立的概念地图如下,箭头表示概念的推导方向:
顺着"嵌入向量"这个箭头往下走,第二章会拆开嵌入生成的黑盒,讲清楚坐标点是怎么被算出来的、不同的距离口径会怎么改变"远近"的含义。如果你更关心工程全景,也可以在读完 1.3 之后直接跳到第四章看系统架构——但建议至少把 3.1 的"维度灾难"读完再跳,那是理解所有架构设计的钥匙。