第47章:向量数据库选型
学习目标
- 理解向量数据库在RAG系统中的作用
- 掌握主流向量数据库的对比选型
- 了解不同场景的最佳存储方案
- 学会在测试知识库中应用向量存储
向量数据库核心定位
RAG系统的记忆层
向量数据库存储文本的Embedding向量,支持语义相似度检索——RAG系统检索外部知识的核心基础设施。
主流向量数据库对比
| 数据库 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| Pinecone | 云托管 | 全托管、高性能、免运维 | 生产级RAG、无运维需求 |
| Chroma | 开源轻量 | Python原生、嵌入式、易上手 | 开发测试、本地原型 |
| FAISS | 算法库 | Meta开源、极致性能、纯算法 | 大规模检索、研究场景 |
| Qdrant | 开源服务 | Rust实现、高性能、过滤强 | 自托管生产、过滤需求 |
| Weaviate | 开源服务 | GraphQL API、模块化、混合搜索 | 复杂搜索、多模态 |
| Milvus | 开源服务 | 云原生、分布式、企业级 | 大规模企业部署 |
选型决策依据
选型决策要点
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 快速原型开发 | Chroma | Python原生,5分钟上手 |
| 生产免运维 | Pinecone | 全托管,SLA保障 |
| 私有化部署 | Qdrant/Milvus | 数据不出域,可控 |
| 研究/算法优化 | FAISS | 纯算法,极致性能 |
| 大规模数据 | Milvus | 分布式架构,可扩展 |
测试知识库应用示例
Chroma测试知识库
# 安装Chroma
pip install chromadb
# 创建测试知识库
import chromadb
from chromadb.utils import embedding_functions
client = chromadb.Client()
ef = embedding_functions.DefaultEmbeddingFunction()
# 创建collection
collection = client.create_collection("test-knowledge")
# 添加测试文档
docs = [
"测试用例应覆盖边界条件",
"回归测试应定期执行",
"缺陷报告需包含重现步骤"
]
collection.add(
documents=docs,
ids=["tc-001", "tc-002", "tc-003"]
)
# 语义检索
results = collection.query(
query_texts=["如何编写测试"],
n_results=2
)
print(results)
本章小结
- 向量数据库:存储Embedding向量,支持语义检索,RAG核心基础设施
- 云托管:Pinecone(生产免运维首选)
- 开源轻量:Chroma(开发测试原型首选)
- 算法库:FAISS(研究/极致性能)
- 开源服务:Qdrant(自托管)、Milvus(大规模)、Weaviate(混合搜索)