什么是向量数据库?它和 MySQL 这类传统数据库有什么本质区别,为什么能在海量向量里快速找到最相似的几条?

向量检索

答案要点 向量数据库存的是 embedding(把文本、图片等编码成的一串数字),核心操作是"找最相似的 Top-K",而不是精确匹配 传统数据库回答"等于/大于"这类精确问题,向量数据库回答"和它最像的是哪几条"这类语义问题 逐条暴力比对是 O(N),千万级向量下每次查询都算不动,所以要用 ANN(近似最近邻) ANN 的思路是提前建好索引,查询时只看一小部分"候选区域",用少量精度换几个数量级的速度 常见索引:HNSW(分层图)、IVF(先聚类再查桶)、PQ(压缩向量省内存) 核心概念 向量数据库是一类专门存储高维向量、并按"相似度"进行检索的数据库:文本、图片先经过 embedding 模型编码成几百到几千维的向量,语义越接近的内容,向量在空间中的距离越近;查询时输入一个查询向量,数据库返回距离最近的 Top-K 条记录。这正是 RAG(检索增强生成)里"根据问题找相关文档"这一步的基础设施。 和传统数据库的对比 | 维度 | 传统数据库(MySQL) | 向量数据库(Milvus/Faiss 等) | |------|------|------| | 存什么 | 结构化行数据 | 高维向量 + 元数据 | | 怎么查 | 精确条件(WHERE) | 相似度 Top-K(近邻搜索) | | 结果 | 完全匹配的集合 | 按距离排序的"最像的几条" | | 典型索引 | B+ 树 | HNSW / IVF / PQ | ANN 为什么快 暴力检索要把查询向量和库里每一条都算一次距离,N 条就是 N 次计算,规模一大就扛不住 ANN 提前建索引:比如 HNSW 把向量组织成多层"高速公路网",查询时从高层粗定位、逐层往下细找,只访问极少数节点 代价是"近似":可能漏掉个别真正的最近邻,用召回率(找回来多少真答案)衡量;实践中 95%+ 的召回换来毫秒级响应,非常划算 入门之后,可以往 HNSW/IVF 的原理细节、召回率与延迟的权衡、混合检索方向深入。

口语版讲法(约2分钟)

  • 一句话定义:专门存向量、回答"谁和它最像"的数据库
  • 传统数据库查精确条件,向量数据库查语义相似
  • 暴力比对 O(N) 扛不住,所以用 ANN 近似检索
  • 图书馆比喻:分区索引 vs 逐本翻书,精度换速度
  • 埋钉子:HNSW 分层图索引

如果让我一句话解释,向量数据库就是一个专门存向量、专门回答"谁和它最像"的数据库。 展开说一下。传统数据库比如 MySQL,擅长回答精确问题,比如"查订单号等于 123 的记录",要么命中要么没有。但大模型时代很多需求是模糊的语义问题,比如"找和这个提问意思最接近的文档"。做法是先用 embedding 模型把文本变成一串数字,也就是向量,意思越接近的文本,向量之间的距离就越近。向量数据库干的事,就是在几百万甚至几千万条向量里,快速找出离查询向量最近的前几条。 这里有个关键问题:最笨的办法是把查询向量和库里每一条都比一遍,一千万条就要算一千万次距离,每次查询都这么算肯定扛不住。所以向量数据库都用 ANN,也就是近似最近邻。打个比方,暴力检索像在图书馆里逐本翻书找最相关的一本;ANN 像图书馆提前做好了分区和索引,你先走到对应的主题区,再在那一小片书架里细找,速度快好几个数量级,代价是偶尔可能漏掉一两本真正最相关的书。这个"找回来多少真答案"用召回率来衡量,工程上通常用 95% 以上的召回换毫秒级的响应,非常划算。 在 RAG 系统里,向量数据库就是"根据问题找相关文档"那一步的地基,检索又快又准,大模型的回答才有可靠的材料。 最后主动提一句,ANN 里最主流的索引是 HNSW,它把向量组织成一个多层的图,像高速公路网一样从高层粗定位、逐层往下精找,我对它的建图和查询过程也做过一些了解,可以展开聊。

关键一句:向量数据库查的是"相似度 Top-K"而不是精确匹配,快的关键在 ANN 用预建索引和少量精度换速度。

面试官可能的追问

  1. 【概念辨析】MySQL 也能存一列数字数组,为什么不直接在 MySQL 里算相似度,非要引入一个向量数据库?两者的本质分工差在哪?
  2. 【场景切入】假设要给公司十万篇文档做语义搜索,用户输入一句话就能找到意思最接近的文档,你会怎么存、怎么查?暴力逐条比对行不行?

同模块相关题目