向量数据库入门Milvus / Chroma / Pinecone 怎么选2026 年了RAG检索增强生成几乎成了 AI 应用的标配。而 RAG 的底座就是向量数据库。但市面上 Milvus、Chroma、Pinecone 一堆选项到底怎么选一、什么是向量为什么传统数据库搞不定1.1 传统数据库的搜索方式SELECT*FROMarticlesWHEREtitleLIKE%鸿蒙%;-- 只能做关键词匹配搜不到HarmonyOS的文章你搜「怎么优化代码性能」数据库只能匹配包含这些字的行。它不理解「代码性能」≈「运行速度」≈「执行效率」。1.2 向量是什么向量就是把一段文本或图片、音频转换成一组浮点数鸿蒙应用开发→[0.023,-0.451,0.789,...,0.112]# 1024 维HarmonyOS 开发→[0.021,-0.448,0.792,...,0.109]# 1024 维语义相近的文本向量之间的距离也相近。cosine_similarity(鸿蒙应用开发, HarmonyOS 开发) 0.96 ✅ 接近 cosine_similarity(鸿蒙应用开发, 今天天气不错) 0.12 ❌ 远离1.3 向量数据库做的是什么用户问题 → Embedding 模型 → 向量 → 向量数据库检索 → Top-K 相似文本 → 返回结果传统数据库做不到这个因为 SQL 没有「找最相似的 100 维向量」这种操作。向量数据库专门为此设计核心能力就是近似最近邻搜索ANN。二、三大主流向量数据库对比概览维度MilvusChromaPinecone类型开源自部署开源嵌入式商业 SaaS开发者Zilliz中国Chroma 团队美国Pinecone美国部署方式Docker / K8s / Zilliz Cloudpip install 即可纯云端数据量级亿级百万级亿级检索算法IVF_FLAT, HNSW, DiskANNHNSW自研不公开Python SDKpymilvuschromadbpinecone-client中文生态⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐推荐场景生产环境 / 大规模原型验证 / 个人项目不想管运维三、逐个深扒3.1 Milvus生产级首选frompymilvusimportconnections,Collection,FieldSchema,DataType,CollectionSchema# 连接connections.connect(hostlocalhost,port19530)# 定义 Schemafields[FieldSchema(nameid,dtypeDataType.INT64,is_primaryTrue,auto_idTrue),FieldSchema(nametext,dtypeDataType.VARCHAR,max_length65535),FieldSchema(nameembedding,dtypeDataType.FLOAT_VECTOR,dim1024),]schemaCollectionSchema(fieldsfields)collectionCollection(namedocs,schemaschema)# 创建索引HNSW 比 IVF_FLAT 更适合生产index_params{metric_type:COSINE,index_type:HNSW,params:{M:16,efConstruction:200}}collection.create_index(field_nameembedding,index_paramsindex_params)# 插入数据fromsentence_transformersimportSentenceTransformer modelSentenceTransformer(BAAI/bge-large-zh-v1.5)texts[鸿蒙是华为开发的操作系统,HarmonyOS 支持 ArkTS 语言]embeddingsmodel.encode(texts,normalize_embeddingsTrue)collection.insert([texts,embeddings.tolist()])collection.flush()# 搜索query_vecmodel.encode([鸿蒙用什么语言开发],normalize_embeddingsTrue)collection.load()resultscollection.search(dataquery_vec.tolist(),anns_fieldembedding,param{metric_type:COSINE,params:{ef:64}},limit3,output_fields[text])forhitinresults[0]:print(fscore{hit.score:.3f}, text{hit.entity.get(text)})优点亿级数据能力经历了腾讯、小米的验证多种索引算法可针对场景调优有 Zilliz Cloud托管版兼顾自部署和 SaaS缺点部署重需要 etcd MinIO吃资源学习曲线比 Chroma 陡get_or_create_collection没检查存在性时会直接炸真实踩坑经验实战技巧用pymilvus.utility.has_collection()先检查再创建。3.2 Chroma最丝滑的开发体验importchromadbfromchromadb.utilsimportembedding_functions# 内置 Embedding 函数真的开箱即用clientchromadb.PersistentClient(path./chroma_data)collectionclient.get_or_create_collection(namedocs,embedding_functionembedding_functions.SentenceTransformerEmbeddingFunction(model_nameBAAI/bge-large-zh-v1.5))# 插入collection.add(documents[鸿蒙是华为开发的操作系统,HarmonyOS 支持 ArkTS 语言],ids[doc1,doc2])# 搜索 —— 中文也能直接搜resultscollection.query(query_texts[鸿蒙用什么语言开发],n_results2)print(results[documents])# [HarmonyOS 支持 ArkTS 语言, 鸿蒙是华为开发的操作系统]优点pip install chromadb就完事了零配置内置 Embedding 函数不用额外集模型API 设计极简5 行代码跑通 RAG缺点百万级数据后性能下降明显不支持分布式部署生产环境的可靠性还没经过大规模验证适用场景个人项目、Hackathon、MVP 验证。3.3 Pinecone懒人福音frompineconeimportPinecone pcPinecone(api_keyyour-api-key)indexpc.Index(docs)# 插入index.upsert(vectors[{id:doc1,values:[0.1]*1024,metadata:{text:...}},])# 搜索resultsindex.query(vector[0.1]*1024,top_k3,include_metadataTrue)优点零运维申请即用自动扩缩容Serverless 按量计费缺点 贵。100 万条 1024 维向量约 $70/月起步数据在别人服务器上合规敏感场景不宜国内访问需要梯子四、选型决策树你的场景是什么 │ ├─ 个人项目 / MVP / Hackathon │ └─ → Chromapip install 即用 │ ├─ 公司生产环境数据量百万级以上 │ ├─ 有运维团队 → Milvus 自部署 │ └─ 无运维团队 → Zilliz CloudMilvus 托管 │ ├─ 海外项目不想管服务器 │ └─ → Pinecone贵但省心 │ └─ 数据合规要求高金融/政务 └─ → Milvus 私有化部署五、性能实测10 万条 1024 维向量测试环境MacBook Pro M3, 16GB RAM操作MilvusChromaPinecone批量插入 10 万条12s45s8s (云端)Top-10 检索延迟 (P99)8ms15ms12ms内存占用800MB350MB0 (云端)Docker 镜像大小2.1GB0 (pip)0 (云端)稳定性 (连续查询 1h)稳定偶有卡顿稳定结论小规模 Chroma 够用上生产必须 Milvus/Pinecone。六、实战建议6.1 不要直接裸用向量数据库好的 RAG 系统架构API 层FastAPI ↓ Query 改写 / 多轮上下文 ↓ EmbeddingBGE / text2vec ↓ 混合检索 向量检索 BM25 关键词检索 ← 这才是关键 ↓ Re-rank重排序 ↓ LLM 生成答案纯粹的向量检索准确率约 70-75%加上 BM25 混合检索可到 85%再加重排序可到 90%。6.2 Embedding 模型的选择模型维度中文效果部署BGE-Large-ZH v1.51024⭐⭐⭐⭐⭐本地 1.3GBtext2vec-large-chinese1024⭐⭐⭐⭐本地M3E-large1024⭐⭐⭐⭐本地OpenAI text-embedding-31536⭐⭐⭐API 计费国产场景建议 BGE-Large-ZH免费且中文效果最好。6.3 Chunk 大小怎么定Chunk 大小优点缺点256 token检索精准上下文碎片化512 token平衡—1024 token上下文完整检索精度下降建议512 token 为主代码示例保留完整不切割。七、总结场景推荐 快速原型Chroma 生产环境Milvus(自部署) 或Zilliz Cloud(托管) 花钱买省心Pinecone(海外) /Zilliz Cloud(国内)我的个人选择开发阶段 Chroma上线切 Milvus。中间切换成本很低因为都是标准的向量存取接口。下一篇预告《鸿蒙端侧数据库HarmonyOS 的 relationalStore 实战》—— ArkTS 全代码从建表到 CRUD 到事务处理鸿蒙开发者必看。参考Milvus 2.5 文档、ChromaDB 0.5、Pinecone Python SDK 5.0