向量数据库横评:Chroma vs Pinecone vs Weaviate vs Milvus
做 RAG 系统绕不开向量数据库的选型。这篇文章从工程角度做个横评。 核心功能对比 Chroma Pinecone Weaviate Milvus 部署方式 本地/云 纯云服务 本地/云 本地/云 开源 ✓ ✗ ✓ ✓ Python SDK ✓ ✓ ✓ ✓ 混合检索 部分 ✓ ✓ ✓ 适合规模 小-中 中-大 中-大 大 Chroma:本地开发首选 import chromadb client = chromadb.PersistentClient(path="./chroma_db") collection = client.get_or_create_collection( name="my_docs", metadata={"hnsw:space": "cosine"} ) # 添加文档 collection.add( documents=["RAG 是检索增强生成", "向量数据库存储高维向量"], ids=["doc1", "doc2"] ) # 查询 results = collection.query( query_texts=["什么是检索增强?"], n_results=3 ) 适合场景:本地开发、原型验证、数据量 < 100 万条。 优点:零配置启动,和 LangChain 深度集成。 缺点:性能和功能不适合大规模生产。 Pinecone:托管云服务 from pinecone import Pinecone, ServerlessSpec pc = Pinecone(api_key="your-key") pc.create_index( name="my-index", dimension=1536, metric="cosine", spec=ServerlessSpec(cloud="aws", region="us-east-1") ) index = pc.Index("my-index") # 插入向量 index.upsert(vectors=[ ("id1", [0.1, 0.2, ...], {"text": "原始文本", "source": "doc.pdf"}), ]) # 查询 results = index.query( vector=[0.1, 0.2, ...], top_k=5, filter={"source": "doc.pdf"}, # 元数据过滤 include_metadata=True ) 适合场景:不想运维、快速上线、预算充足。 ...