一种专门存"一串数字"的神奇数据库,能帮你超快找到"最相似"的内容!AI 的超级记忆力就靠它。
一组描述事物的数字,就像给东西打"特征分数"
专门存放向量的特殊仓库,擅长"相似搜索"
通过比较数字的"距离",找到最像的那个
AI 用向量数据库记住你聊过的所有内容
"向量"听起来很吓人,但其实超级简单——它就是一组数字!我们用这组数字来描述一个东西的特征。
你已经知道向量是"一组数字"了。那向量数据库呢?就是一个专门存放大量向量的特殊仓库,而且它有一个超能力——快速找到最相似的向量!
向量数据库判断两个东西"像不像"的方法特别简单——算它们数字之间的距离!距离越小,就越像。
这个"算距离"的过程,电脑做起来超级快。就算数据库里有几亿条向量,它也能在几毫秒内找到最像的那几个!
# 我们来模拟一个简单的向量数据库 # 每部电影用3个数字描述:[搞笑程度, 动作程度, 感动程度] movie_database = { "喜剧之王": [9, 2, 6], # 超搞笑,动作少,有点感动 "复仇者联盟": [4, 10, 5], # 一般搞笑,动作超多,有点感动 "寻梦环游记": [5, 3, 10], # 一般搞笑,动作少,超感动 "功夫": [8, 7, 3], # 很搞笑,动作多,不太感动 "泰坦尼克号": [2, 3, 10], # 不搞笑,动作少,超感动 } # 我喜欢的一部电影的特征:很搞笑、动作一般、有点感动 my_favorite = [8, 4, 5] # 计算"距离"——数字越接近,电影越像 def calculate_distance(vec1, vec2): """计算两个向量的距离,距离越小越相似""" distance = 0 for i in range(len(vec1)): # 每个特征分数的差值平方后加起来 distance = distance + (vec1[i] - vec2[i]) ** 2 return distance # 找出跟我最喜欢的电影最像的 results = [] for name, vector in movie_database.items(): dist = calculate_distance(my_favorite, vector) results.append((name, dist)) print(f"《{name}》跟我的喜好距离: {dist}") # 按距离从小到大排序,距离越小越像 results.sort(key=lambda x: x[1]) print(f"\n最推荐的电影是:《{results[0][0]}》!")
你问 ChatGPT 一个问题,它怎么能记住你之前聊过什么呢?答案就是——向量数据库就是 AI 的"长期记忆"!
| 对比项 | 普通数据库 | 向量数据库 |
|---|---|---|
| 存什么 | 文字、数字、表格 | 向量(一组数字) |
| 怎么查找 | 精确匹配(完全一样才找到) | 相似搜索(差不多像就能找到) |
| 打个比方 | 花名册点名 📋 | 聪明的侦探 🔍 |
| 擅长什么 | 存账号、订单、成绩 | 图片搜索、推荐、AI记忆 |
| 代表产品 | MySQL、PostgreSQL | Pinecone、Milvus、Chroma |