面试题 12:向量数据库与传统关系型数据库在底层原理有什么不同?
一、 核心范式差异:精确匹配 vs 模糊相似度
传统数据库与向量数据库解决的是完全不同维度的问题:
传统关系型数据库(RDBMS,如 MySQL, PostgreSQL):
设计哲学:基于关系代数,追求 100% 的精确匹配(Exact Match)。
运作方式:当你查询
WHERE name = 'Alice'时,数据库寻找的是字符串完全相等的记录。它无法理解“Alice”和“Alicia”在语义上的相似性。向量数据库(Vector DB,如 Milvus, Pinecone, Qdrant):
设计哲学:基于高维空间几何,追求 近似相似度(Similarity Search)。
运作方式:文本、图像被转化为高维向量(如 1536 维的浮点数数组)。查询时,系统计算 Query 向量与库中向量的“空间距离”(如余弦相似度 Cosine Similarity、欧氏距离 L2),返回距离最近的 Top-K 个结果。它能理解“苹果”和“手机”在特定语境下的关联。

二、 底层数据结构与索引算法差异
这是面试官最看重的硬核技术点。
1. 传统数据库:B+ 树 (B+ Tree)
- 原理:一种自平衡的树形数据结构,数据按顺序存储在叶子节点。
- 特点:时间复杂度为 。非常适合一维数据的范围查询(如 `age > 20 AND age )和精确查找。
- 局限:一旦维度升高(比如超过 10 维),B+ 树和空间索引(如 R 树)会遭遇“维度灾难(Curse of Dimensionality)”,检索效率急剧下降,退化成全表全量扫描(暴力穷举)。
2. 向量数据库:ANN 算法 (Approximate Nearest Neighbor)
为了在千万级的高维向量中实现毫秒级检索,向量数据库放弃了 100% 的准确率,采用“近似最近邻”算法。主流的索引结构包括:
HNSW (Hierarchical Navigable Small World, 分层导航小世界):
目前最主流的向量索引。借鉴了“六度分隔理论”和“跳表(Skip List)”的思想。
构建多层图结构:上层节点稀疏,用于快速跨越大片空间(高速公路);下层节点密集,用于精准定位目标。
IVF-PQ (倒排索引 + 乘积量化):
通过聚类(K-Means)将空间划分成多个区域(Voronoi Cell),查询时只搜索最近的几个区域,大幅减少计算量;同时通过量化压缩向量体积,节省内存。
三、 总结对比矩阵
维度
传统关系型数据库 (MySQL)
向量数据库 (Milvus/Pinecone)
处理数据类型
结构化数据(数字、字符串、日期)
非结构化数据的表征(高维浮点数数组/Embeddings)
底层核心索引
B+ 树、Hash 索引
ANN(HNSW、IVF-PQ 等)
查询逻辑
标量精确匹配、范围查询
向量空间距离计算(余弦相似度、内积)
查询结果性质
绝对确定性(Deterministic)
概率性/近似性(Probabilistic, Top-K)
性能瓶颈点
磁盘 I/O(通常数据在磁盘上)
内存与 CPU/GPU 计算(向量通常需要全量加载入内存)
四、 面试高分答题话术(💡 划重点)
- 点出“维度灾难”:“传统数据库的 B+ 树在处理一维标量时天下无敌,但大模型的向量动辄上千维。在高维空间中,传统索引会遭遇‘维度灾难’,效率退化为全表扫描。这就是为什么我们必须引入专门的向量数据库。”
- 强调 Trade-off(工程权衡):“向量数据库底层的核心是 ANN(近似最近邻)。它本质上是一个 ‘用精度换时间’ 的工程 Trade-off。它不保证找到绝对最近的点,但能在毫秒级返回 99% 准确的结果。”
- 结合实际架构:“在真实的 AI 应用中,我们通常采用混合架构(Hybrid Architecture)。MySQL 依然是核心,用来存储用户的账号、订单等绝对不能出错的标量数据;而向量数据库只用来存储文档的 Embedding。查询时,先在向量库做语义召回,再回 MySQL 查业务详情。”