第 50 篇 · 检索与知识增强

向量数据库:AI的"记忆库"

传统数据库存的是表格,向量数据库存的是向量

上一篇我们讲了向量——把词变成数字,让计算机能理解"意义"。

但问题来了:当你有成千上万个向量时,怎么存储?怎么快速找到和某个向量最相似的几个?

传统数据库(MySQL、PostgreSQL)不擅长这个。我们需要专门的向量数据库

它就像是AI的"记忆库"——存着海量信息,需要时能快速检索出来。

传统数据库 vs 向量数据库

1
有什么不一样?

传统数据库 vs 向量数据库

📊 传统数据库(MySQL、PostgreSQL)

  • • 存储结构化数据:表格、行、列
  • • 查询方式:精确匹配(WHERE name = "张三")
  • • 索引:B-tree、Hash索引
  • • 擅长:事务处理、精确查询

❌ 不擅长

模糊搜索、相似度搜索、海量向量检索

🔮 向量数据库(Pinecone、Milvus)

  • • 存储向量:高维浮点数组
  • • 查询方式:相似度搜索(找最相似的Top-K)
  • • 索引:HNSW、IVF、PQ等向量索引
  • • 擅长:语义搜索、推荐系统、RAG

✓ 专为AI设计

快速在海量向量中找到最相似的

💡 类比

传统数据库就像图书馆的书架——你按书名、作者精确查找。向量数据库就像图书馆管理员——你描述"我要一本像《三体》那样的科幻小说",管理员能根据内容相似度推荐。

向量数据库怎么工作?

2
核心原理

向量数据库的核心挑战:如何在百万、千万甚至亿级向量中,快速找到和查询向量最相似的Top-K个?

向量检索的核心流程
Step 1插入向量

把文档/图片/音频转换成向量,存入数据库

INSERT INTO vectors VALUES (id, [0.5, 0.2, 0.8, ...], metadata)

Step 2构建索引

为向量建立索引结构,加速检索(这是核心!)

HNSW

层次导航小世界图

IVF

倒排文件索引

PQ

乘积量化

Step 3相似度搜索

查询向量 → 索引快速定位 → 返回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 篇 · 第六阶段:检索与知识增强