向量数据库
803 字约 3 分钟
domain/aiai/rag
2026-07-24
1. 核心结论
- 向量数据库专门用于存储和检索高维向量,是 RAG 系统的核心组件
- 向量检索基于相似度计算,而非传统的精确匹配
- 不同向量数据库在性能、功能、部署方式上差异显著
- 索引类型(HNSW、IVF、PQ)直接影响检索速度和精度
- 选择向量数据库需要考虑数据规模、延迟要求、运维成本
2. 基础概念
向量数据库:专门存储、索引和检索高维向量的数据库系统。
ANN(Approximate Nearest Neighbor):近似最近邻搜索,在可接受误差内大幅提升检索速度。
HNSW(Hierarchical Navigable Small World):基于图的索引结构,检索速度快。
IVF(Inverted File Index):倒排文件索引,将向量空间划分为多个簇。
PQ(Product Quantization):乘积量化,压缩向量减少内存占用。
Filter:在向量检索时附加的元数据过滤条件。
Namespace/Collection:向量的逻辑分组。
3. 工作原理
向量数据库核心流程:
- 向量存储:
- 接收 embedding 向量
- 关联元数据(原文、来源、标签等)
- 持久化存储
- 索引构建:
- 选择合适的索引算法
- 构建索引结构
- 平衡速度与精度
- 相似度搜索:
- 接收查询向量
- 在索引中搜索最近邻
- 返回 top-k 结果及相似度分数
- 过滤搜索:
- 结合元数据条件过滤
- 先过滤后检索或先检索后过滤
- 提升检索精度
主流向量数据库对比:
| 数据库 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| Milvus | 开源/云原生 | 功能全面、分布式 | 大规模生产环境 |
| Qdrant | 开源 | 过滤能力强、Rust 实现 | 中小规模、高精度 |
| Weaviate | 开源 | 内置 ML、GraphQL | 快速原型开发 |
| Chroma | 开源 | 轻量级、易集成 | 开发测试、小规模 |
| Pinecone | 托管 | 全托管、易用 | 不想运维的团队 |
| pgvector | 开源插件 | PostgreSQL 扩展 | 已有 PG 基础设施 |
4. 实战场景
- RAG 系统:存储文档 embedding
- 推荐系统:用户和物品向量检索
- 图像搜索:以图搜图
- 去重检测:相似内容识别
- 异常检测:向量距离异常识别
- 语义缓存:缓存相似查询结果
5. 常见误区
- 忽视索引参数:默认参数不一定适合你的数据
- 不测试检索精度:只看速度不看质量
- 忽视元数据过滤:纯向量检索精度有限
- 过度设计:小规模数据不需要复杂分布式方案
- 不监控性能:数据增长后检索速度可能下降
6. 进阶方向
- 混合检索(向量 + 关键词)
- 动态索引更新
- 多向量检索
- 分布式向量数据库
- 向量压缩技术
- GPU 加速检索
7. 推荐资料
- Milvus Docs - https://milvus.io/docs
- Qdrant Docs - https://qdrant.tech/documentation/
- Weaviate Docs - https://weaviate.io/developers/weaviate
- Chroma Docs - https://docs.trychroma.com/
- Pinecone Docs - https://docs.pinecone.io/
- pgvector - https://github.com/pgvector/pgvector
8. 关联笔记
- 向量与Embedding
- RAG基础
- Hybrid Search
- 检索增强生成流程