向量数据库:AI的"记忆库"
传统数据库存的是表格,向量数据库存的是向量
上一篇我们讲了向量——把词变成数字,让计算机能理解"意义"。
但问题来了:当你有成千上万个向量时,怎么存储?怎么快速找到和某个向量最相似的几个?
传统数据库(MySQL、PostgreSQL)不擅长这个。我们需要专门的向量数据库。
它就像是AI的"记忆库"——存着海量信息,需要时能快速检索出来。
1有什么不一样?
📊 传统数据库(MySQL、PostgreSQL)
- • 存储结构化数据:表格、行、列
- • 查询方式:精确匹配(WHERE name = "张三")
- • 索引:B-tree、Hash索引
- • 擅长:事务处理、精确查询
❌ 不擅长
模糊搜索、相似度搜索、海量向量检索
🔮 向量数据库(Pinecone、Milvus)
- • 存储向量:高维浮点数组
- • 查询方式:相似度搜索(找最相似的Top-K)
- • 索引:HNSW、IVF、PQ等向量索引
- • 擅长:语义搜索、推荐系统、RAG
✓ 专为AI设计
快速在海量向量中找到最相似的
💡 类比
传统数据库就像图书馆的书架——你按书名、作者精确查找。向量数据库就像图书馆管理员——你描述"我要一本像《三体》那样的科幻小说",管理员能根据内容相似度推荐。
2核心原理
向量数据库的核心挑战:如何在百万、千万甚至亿级向量中,快速找到和查询向量最相似的Top-K个?
把文档/图片/音频转换成向量,存入数据库
INSERT INTO vectors VALUES (id, [0.5, 0.2, 0.8, ...], metadata)
为向量建立索引结构,加速检索(这是核心!)
HNSW
层次导航小世界图
IVF
倒排文件索引
PQ
乘积量化
查询向量 → 索引快速定位 → 返回Top-K相似向量
SELECT * FROM vectors ORDER BY similarity(query_vec, vec) LIMIT 10
3如何让搜索变快?
如果暴力搜索(计算查询向量和所有向量的相似度),在百万级数据上会非常慢。向量索引用空间换时间,大幅加速检索。
🌳 HNSW(Hierarchical Navigable Small World)
原理:构建多层图结构
- • 高层稀疏,快速跳跃到目标区域
- • 低层密集,精确定位最近邻
- • 类似"跳表"的思想
特点
✓ 速度快(毫秒级)
✓ 召回率高(95%+)
✓ 内存占用大
✓ Pinecone、Milvus默认使用
📦 IVF(Inverted File Index)
原理:聚类 + 倒排索引
- • 先对向量聚类(如K-means)
- • 每个聚类中心建倒排表
- • 查询时只搜索最近的几个聚类
特点
✓ 内存占用小
✓ 支持大规模数据
✓ 速度中等
✓ 召回率略低(需要调参)
🗜️ PQ(Product Quantization)
原理:向量压缩
- • 把高维向量切分成多个子向量
- • 每个子向量量化为码本索引
- • 压缩存储,节省空间
特点
✓ 压缩率高(可压缩90%+)
✓ 适合超大规模(亿级)
✓ 有精度损失
✓ 常与IVF结合使用
4有哪些选择?
☁️ Pinecone
- • 全托管云服务
- • 开箱即用,无需运维
- • 性能优秀,生态完善
- • 缺点:价格较贵
🔧 Milvus
- • 开源,可自托管
- • 支持多种索引类型
- • 社区活跃,文档完善
- • 缺点:需要自己运维
🚀 Weaviate
- • 开源,支持云托管
- • 内置向量化模块
- • GraphQL API
- • 缺点:生态相对小
🦜 Chroma
- • 轻量级,适合开发测试
- • Python原生,易上手
- • 开源免费
- • 缺点:不适合大规模生产
📊 如何选择?
- • 小规模、快速原型:Chroma、Pinecone免费层
- • 中等规模、需要控制成本:Milvus自托管
- • 大规模、不想运维:Pinecone企业版、Milvus云版
- • 需要内置向量化:Weaviate
5向量数据库能做什么?
🔍 语义搜索
用户搜索"如何做番茄炒蛋",系统返回所有相关菜谱,即使文档中没有精确匹配这个词。
💬 RAG问答系统
把知识库文档向量化存储。用户提问时,检索相关文档,让AI基于这些文档生成答案。
🎯 推荐系统
把用户行为、商品特征都向量化。找到和用户兴趣最相似的商品进行推荐。
🖼️ 图片搜索
用户上传一张图片,在图库中找到相似的图片——背后就是向量相似度搜索。
🤖 AI记忆
AI Agent把对话历史、学习到的知识向量化存储,需要时检索出来——这就是"长期记忆"。
📝 去重检测
判断两篇文章、两个商品描述是否相似——用向量相似度判断,比关键词匹配准确。
6别掉进这些坑
❌ 误区1:向量数据库完全取代传统数据库
不是的。向量数据库擅长相似度搜索,但不擅长事务处理、复杂查询。通常会结合使用:传统数据库存元数据,向量数据库存向量。
✓ 实际:PostgreSQL + pgvector插件,既能SQL查询又能向量检索
❌ 误区2:索引参数不需要调
错。索引参数(如HNSW的M、efConstruction)会显著影响性能和召回率。需要根据数据规模、查询延迟要求调整。
✓ 实际:通常需要在"速度"和"召回率"之间权衡
❌ 误区3:相似度高就一定相关
向量相似度只是语义相似度,不代表业务相关。比如"苹果公司"和"苹果水果"向量可能很相似,但在某些场景下完全不相关。
✓ 实际:需要结合元数据过滤(metadata filtering)
→核心总结
🎓 一句话总结
- ①定义:向量数据库专门存储和检索向量,支持相似度搜索
- ②核心:向量索引(HNSW、IVF、PQ)用空间换时间,大幅加速检索
- ③选择:Pinecone(全托管)、Milvus(开源)、Chroma(轻量)各有优劣
- ④应用:语义搜索、RAG、推荐系统、图片搜索、AI记忆——向量数据库是AI应用的基础设施
→下一篇预告
有了向量数据库,怎么找到最相关的内容?
向量数据库擅长相似度搜索,但具体是怎么做的?如何衡量"相似"?如何保证召回率?
下一篇,我们深入讲讲相似度搜索——这是向量检索的核心技术。
✏️ 手绘图解 · AI Catch 出品
第 50 篇 / 共 84 篇 · 第六阶段:检索与知识增强