向量数据库实战
简介
向量数据库是 RAG 系统的"记忆"组件。传统数据库存储结构化数据(行和列),向量数据库存储向量(Embedding)——即文本、图片等内容的数值化语义表示。它的核心能力是:给定一个查询,快速找到语义最相似的向量。
这个能力叫做"近似最近邻搜索"(ANN),是让 RAG 系统快速检索相关知识的底层引擎。没有向量数据库,RAG 就需要暴力遍历所有文档——在实际应用中完全不可行。
课程资源
资源汇总
主流向量数据库对比:
| 数据库 | 开源 | 托管服务 | 特点 | 适用场景 |
|---|---|---|---|---|
| Chroma | ✅ | ❌ | 纯 Python,零配置,内存/持久化 | 本地开发、原型验证 |
| Qdrant | ✅ | ✅ | Rust 实现,高性能,支持过滤+向量混合检索 | 生产环境首选之一 |
| Milvus | ✅ | ✅ | 分布式架构,十亿级向量 | 大规模向量检索 |
| Weaviate | ✅ | ✅ | GraphQL API,内置模块丰富 | 需要灵活查询的场景 |
| Pinecone | ❌ | ✅ | 全托管,零运维 | 快速上线、不想自运维 |
| pgvector | ✅ | ❌ | PostgreSQL 扩展 | 已有 PG 数据库,不想引入新组件 |
动手实战:
- Qdrant Python Client Tutorial — 从零开始,15 分钟跑起来
- Chroma Quickstart — 代码即文档,几步就能用
- LangChain + Qdrant Integration — 在 RAG pipeline 中使用 Qdrant
Embedding 模型选择:
- OpenAI Embedding —
text-embedding-3-small性价比最高 - HuggingFace Massive Text Embedding Benchmark (MTEB) — 中文 Embedding 模型排行榜
- FlagOpen (BAAI) — 中文场景推荐的开源 Embedding 模型
- Jina AI Embeddings — 支持 100+ 语言,长文本 Embedding
备注
入门推荐:Chroma(本地开发) → Qdrant(生产部署)。Chroma 不需要装任何服务,pip install 就能用,非常适合学习。Qdrant 单机版一个 Docker 命令就起来了,功能完善,是生产环境的稳妥选择。
pgvector 也很值得关注——如果你项目里已经有 PostgreSQL,加一个扩展就能用向量检索,多一个组件都不用装。
关键概念弄明白三个就行:Embedding(文本 → 向量)、ANN 检索(快速找到相似向量)、元过滤(向量相似度 + 结构化条件混合查询)。