传统数据库和向量数据库:AI为啥需要向量数据库?
传统数据库和向量数据库:AI为啥需要向量数据库?
适合小白看懂:大白话讲清两种数据库,搞懂 AI 知识库背后是怎么找相似内容的
前言
现在很多 AI 聊天机器人,能读取我们自己上传的文档、笔记,回答文档里的内容,这个功能背后就用到了向量数据库。
大家会有疑问:我平时用的数据库,比如 MySQL,存文字文件不行吗?
答案:可以存,但是看不懂语义。
举个例子:
文档 A:小猫在雪地上跑
文档 B:小白猫踩在白雪上飞快往前冲
用普通数据库搜索关键词 “小猫雪地跑”。
文档 A 能搜到;文档 B 没有 “小猫、跑” 这些一模一样的词,就搜不到。但两句话表达的意思几乎一样。
普通数据库只会比对文字一不一样,不会懂话的含义。向量数据库就是专门解决这个 “找意思相近内容” 的工具。
一、普通传统数据库能干啥、不能干啥
我们平时业务用的数据库(MySQL、MongoDB 这些)就是传统数据库。
✅擅长:
存表格类信息:账号、密码、订单、年龄。
按文字、数字精确查找。比如查某个用户的手机号,查某条订单。匹配字符是否一模一样。
❌不擅长:
看不懂一句话是什么意思。只会字面匹配。
图片、语音、大段文章,没法直接对比 “两个内容像不像”。
小补充:有些数据库装插件也能存向量,但量大之后速度会很慢,不是专门干这个的。
二、什么是向量数据库?
什么是向量?
简单说:把文字、图片、声音、视频,交给一个 AI 模型,转换成一串数字。这串数字就叫向量。
比如一句话,变成一堆数字:[0.12, -0.34, 0.56……],这串数字也可以理解为“数字指纹”。
每一组数字代表这份内容的特点。
👉意思越接近的两段文字,得到的这串数字,在虚拟的数字空间里就靠得越近。
向量数据库,就是专门存这一串串数字的数据库。
✅向量数据库做的事:
-
保存一大堆数字向量,同时保存原来的文字、图片
-
你来一段新的问题,也转成数字
-
在数字空间里,快速找出离它最近的几组数字,把对应的原文拿出来
这就是 AI 知识库(RAG)检索的底层逻辑。
三、向量数据库完整工作流程(大白话版)
分为两步:存资料进去、用户提问查询。
第一步:把你的文档存进向量库
-
把长文章切一小段一小段(一大段文字效果不好)
-
AI 模型把每一小段文字,变成一串数字(向量)
-
数字 + 原本的文字,一起存入向量数据库
-
数据库做好内部加速结构,方便之后快速查找
重点提醒:存文档、用户提问,必须用同一个 AI 模型转数字。不然两套数字空间不一样,找出来的内容会乱七八糟。
第二步:用户提问,AI 找资料
-
用户输入问题
-
同样的 AI 模型,把问题也转成一串数字
-
在向量库里面,计算:问题的这串数字,和库里存的所有数字之间的远近关系
-
挑出距离最近的几条,拿出它们原本的文字
-
把找到的文字连同问题一起交给大模型,AI 结合资料给出回答
四、怎么判断两组数字(向量)离得近?两种常用办法
想象有一个看不见的数字空间,每一串数字就是空间里面的一个点。
两个点离得越近,代表两段文字含义越像。有两种计算远近的方式:欧式距离、余弦相似度。
1. 欧式距离(图片检索用得多)
就是算两点之间直线有多远。
两个 nnn 维向量:
a=(a1,a2,…,an) \boldsymbol a = (a_1,a_2,\dots,a_n) a=(a1,a2,…,an)
b=(b1,b2,…,bn) \boldsymbol b = (b_1,b_2,\dots,b_n) b=(b1,b2,…,bn)
d(a,b)=∑i=1n(ai−bi)2 d(\boldsymbol a,\boldsymbol b) = \sqrt{\sum_{i=1}^{n}(a_i - b_i)^2} d(a,b)=i=1∑n(ai−bi)2
-
数值越小,两点挨得越近,内容越相似
-
数值越大,隔得越远,内容不相关
缺点:会受数字本身大小干扰。
举例:两句话意思完全一样,生成出来的数字整体大小不一样,就算方向一样,算出来直线距离也会变得很大,会误判两者不相似。
2. 余弦相似度(文本 AI 最常用)
它不看两点直线距离,看的是两个点从原点出发,指向的方向一不一样。
只关心方向,不在乎数字整体大小。
-
数值越接近 1:方向几乎一样,内容高度相似
-
数值等于 0:完全没关系
-
数值接近‑1:意思相反
举个简单二维例子:
点 1:[2,2],点 2:[1,1]
两个点指向完全同一个方向,只是数字大小不一样。
余弦相似度判定:两者非常相似。
欧式距离算出来却距离很远。
正好对应文本场景:两段意思一样的文字,生成的数字整体大小可能不一样,但是方向相同。
所以做文档知识库,优先选余弦相似度。
小坑:很多工具返回 “余弦距离”,不是余弦相似度。余弦距离 = 1‑余弦相似度,这个时候数字越小代表越像。
五、为什么不能直接全部挨个算一遍?为啥要向量数据库?
假设库里存 100 万段文档,每一次提问,如果拿问题数字,和 100 万条全部挨个算一遍远近。
计算量爆炸,查询会非常慢,网页、机器人根本没法用。
向量数据库会做特殊的加速索引,不用挨个比对全部数据,只挑选一小部分候选做计算,牺牲一点点准确率,换来毫秒级快速查询。
六、简单总结
-
传统数据库比对文字字面是否相同,不懂语义;向量数据库把内容变成数字,靠数字空间远近判断语义是否相似,是 AI 知识库的基础。
-
AI 知识库流程:文章切碎→转为数字存入库;用户提问转数字→计算远近→取出原文交给大模型。
-
欧式距离:算两点直线距离;余弦相似度:看指向方向。
-
海量数据不能暴力全部计算,向量数据库靠特殊索引实现快速搜索。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)