向量数据库实战:选型、调优与落地~系列文章08:Chroma 轻量实战:5 分钟搭建你的第一个向量应用
Chroma 轻量实战5 分钟搭建你的第一个向量应用 本文是《向量数据库实战选型、调优与落地》专栏第 08 篇⏱️阅读时间约 10 分钟 开篇最简单的向量数据库如果你只想快速验证一个想法不想折腾 Docker、集群、配置文件——Chroma 就是你的菜┌─────────────────────────────────────────────────────┐ │ Chroma 的定位 │ ├─────────────────────────────────────────────────────┤ │ │ │ Milvus 重型卡车功能全但重 │ │ Qdrant 跑车快但需要一定配置 │ │ Chroma 自行车轻便、即开即走 │ │ │ │ 一行 pip install三行代码就能跑起来 │ │ │ └─────────────────────────────────────────────────────┘️ 安装 启动# 安装pipinstallchromadb# 就这么简单没有第二步了 Chroma 支持三种运行模式模式说明适用场景内存模式进程结束数据消失快速测试、Demo持久化模式数据存本地磁盘开发调试、小项目客户端-服务器独立服务进程生产环境 5 分钟实战模式一内存模式最快上手importchromadb# 创建内存客户端clientchromadb.EphemeralClient()# 创建集合Chroma 内置了默认 embedding 函数collectionclient.create_collection(namemy_knowledge,metadata{hnsw:space:cosine}# 余弦相似度)# 添加数据直接传文本Chroma 自动调用 embedding 模型collection.add(documents[向量数据库是专门存储和检索向量的数据库,HNSW 是最流行的向量索引算法,Chroma 是最轻量的向量数据库,RAG 技术让大模型能访问外部知识,余弦相似度衡量向量方向的相似程度,],ids[doc1,doc2,doc3,doc4,doc5])# 查询也是直接传文本resultscollection.query(query_texts[什么是向量数据库],n_results3)# 打印结果fordoc,distanceinzip(results[documents][0],results[distances][0]):print(f距离:{distance:.4f}|{doc})输出距离: 0.1823 | 向量数据库是专门存储和检索向量的数据库 距离: 0.3156 | Chroma 是最轻量的向量数据库 距离: 0.3892 | RAG 技术让大模型能访问外部知识看到了吗不需要自己调用 Embedding 模型Chroma内置了默认的 embedding 函数基于all-MiniLM-L6-v2直接传文本就能用模式二持久化模式importchromadb# 持久化到本地目录clientchromadb.PersistentClient(path./chroma_data)# 后续操作和内存模式完全一样collectionclient.get_or_create_collection(my_knowledge)collection.add(documents[...],ids[...])模式三服务器模式# 启动 Chroma 服务chroma run--path./chroma_data--port8000# 客户端连接importchromadb clientchromadb.HttpClient(hostlocalhost,port8000) Chroma 的独特功能1. 自动 Embedding# Chroma 默认使用 all-MiniLM-L6-v2# 你也可以自定义 embedding 函数fromchromadb.utilsimportembedding_functions# 使用 OpenAI embeddingopenai_efembedding_functions.OpenAIEmbeddingFunction(api_keysk-xxx,model_nametext-embedding-3-small)collectionclient.create_collection(nameopenai_collection,embedding_functionopenai_ef)2. 内置元数据过滤# 添加带元数据的文档collection.add(documents[文档A内容,文档B内容,文档C内容],metadatas[{source:wiki,year:2024},{source:blog,year:2025},{source:wiki,year:2025},],ids[a,b,c])# 带过滤的查询resultscollection.query(query_texts[查询内容],where{source:wiki},# 精确过滤where_document{$contains:文档},# 文档内容过滤n_results2)3. 内置 Embedding 模型对比集成模型维度大小速度效果all-MiniLM-L6-v2默认38480MB⚡⚡⚡⭐⭐⭐all-mpnet-base-v2768420MB⚡⚡⭐⭐⭐⭐OpenAI text-embedding-31536API⚡⚡⭐⭐⭐⭐⭐BGE-M3自定义10242.2GB⚡⭐⭐⭐⭐⭐ Chroma vs Milvus vs Qdrant对比维度ChromaMilvusQdrant上手难度⭐最简单⭐⭐⭐⭐⭐安装方式pip installDocker ComposeDocker内置 Embedding✅❌❌分布式❌✅基础数据量上限~100 万无上限~千万适合场景原型验证、小项目大规模生产中大规模生产就绪⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ Chroma 最佳使用场景┌─────────────────────────────────────────────────────────┐ │ Chroma 最佳使用场景 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ✅ 快速原型验证30 分钟跑通一个 RAG Demo │ │ ✅ 本地开发调试不需要启动外部服务 │ │ ✅ 小数据量应用 100 万条 │ │ ✅ LangChain / LlamaIndex 集成内置支持 │ │ ✅ Jupyter Notebook 实验 │ │ │ │ ❌ 大规模生产环境 100 万条 │ │ ❌ 需要高可用/分布式 │ │ ❌ 需要复杂索引类型 │ │ │ └─────────────────────────────────────────────────────────┘ 本篇核心要点回顾要点说明Chroma 定位最轻量的向量数据库pip install 即用杀手锏内置 Embedding直接传文本就能搜索三种模式内存 / 持久化 / 客户端-服务器适合场景原型验证、小项目、本地开发不适合大规模生产环境下篇预告《FAISS 深度实战Facebook 的向量检索利器单机性能天花板 》有问题欢迎评论区讨论觉得有用请点赞收藏 作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容