向量数据库实战:选型、调优与落地~系列文章08:Chroma 轻量实战:5 分钟搭建你的第一个向量应用
2026/7/19 19:58:10 网站建设 项目流程

Chroma 轻量实战:5 分钟搭建你的第一个向量应用 🎯

🔥本文是《向量数据库实战:选型、调优与落地》专栏第 08 篇

⏱️阅读时间:约 10 分钟


🎯 开篇:最简单的向量数据库

如果你只想快速验证一个想法,不想折腾 Docker、集群、配置文件——

Chroma 就是你的菜🍒

┌─────────────────────────────────────────────────────┐ │ Chroma 的定位 │ ├─────────────────────────────────────────────────────┤ │ │ │ Milvus = 重型卡车(功能全,但重) │ │ Qdrant = 跑车(快,但需要一定配置) │ │ Chroma = 自行车(轻便、即开即走)🚲 │ │ │ │ 一行 pip install,三行代码就能跑起来 │ │ │ └─────────────────────────────────────────────────────┘

🛠️ 安装 & 启动

# 安装pipinstallchromadb# 就这么简单,没有第二步了 😂

Chroma 支持三种运行模式

模式说明适用场景
内存模式进程结束数据消失快速测试、Demo
持久化模式数据存本地磁盘开发调试、小项目
客户端-服务器独立服务进程生产环境

📝 5 分钟实战

模式一:内存模式(最快上手)

importchromadb# 创建内存客户端client=chromadb.EphemeralClient()# 创建集合(Chroma 内置了默认 embedding 函数!)collection=client.create_collection(name="my_knowledge",metadata={"hnsw:space":"cosine"}# 余弦相似度)# 添加数据(直接传文本!Chroma 自动调用 embedding 模型)collection.add(documents=["向量数据库是专门存储和检索向量的数据库","HNSW 是最流行的向量索引算法","Chroma 是最轻量的向量数据库","RAG 技术让大模型能访问外部知识","余弦相似度衡量向量方向的相似程度",],ids=["doc1","doc2","doc3","doc4","doc5"])# 查询(也是直接传文本!)results=collection.query(query_texts=["什么是向量数据库"],n_results=3)# 打印结果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# 持久化到本地目录client=chromadb.PersistentClient(path="./chroma_data")# 后续操作和内存模式完全一样collection=client.get_or_create_collection("my_knowledge")collection.add(documents=["..."],ids=["..."])

模式三:服务器模式

# 启动 Chroma 服务chroma run--path./chroma_data--port8000
# 客户端连接importchromadb client=chromadb.HttpClient(host="localhost",port=8000)

🧩 Chroma 的独特功能

1. 自动 Embedding

# Chroma 默认使用 all-MiniLM-L6-v2# 你也可以自定义 embedding 函数fromchromadb.utilsimportembedding_functions# 使用 OpenAI embeddingopenai_ef=embedding_functions.OpenAIEmbeddingFunction(api_key="sk-xxx",model_name="text-embedding-3-small")collection=client.create_collection(name="openai_collection",embedding_function=openai_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"])# 带过滤的查询results=collection.query(query_texts=["查询内容"],where={"source":"wiki"},# 精确过滤where_document={"$contains":"文档"},# 文档内容过滤n_results=2)

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 的向量检索利器,单机性能天花板 💪》

💬有问题欢迎评论区讨论,觉得有用请点赞收藏 👍

作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。

👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)
🔔 关注专栏,不错过后续精彩内容

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询