什么是 Chroma
Chroma(也常叫 ChromaDB)是一款Apache2.0 协议开源、面向 AI 检索场景的向量数据库,主打极简开发体验,是目前 LLM 应用、RAG 原型开发中最流行的向量存储方案之一Chroma。
简单一句话:传统数据库只能做关键词匹配;Chroma 可以存储文本 / 图片等内容的 Embedding 向量,按语义相似度检索,帮大模型找到私有知识库中相关片段,解决大模型幻觉问题。
它的定位是 “开箱即用”,官方口号:Batteries Included,内置 Embedding、向量索引、文档存储、元数据过滤,不用额外组装大量组件,几行代码就能跑通语义检索流程Chroma。
核心能力与特性
✅ 两种运行模式
- 内存模式(默认):数据放内存,程序退出数据丢失,适合快速实验、原型调试。
- 持久化模式:数据落地到本地磁盘,元数据使用 SQLite 存储,重启后向量库不丢失,一行代码切换模式。
✅ 核心数据模型:Collection(集合)
Collection 是 Chroma 最基础的存储单元,一个集合内每条数据包含:
- 唯一 ID
- Embedding 向量
- 原始文档(可选)
- 自定义元数据(metadata),用于过滤查询Chroma
支持基于元数据做条件过滤,例如按文档来源、时间、标签筛选,在向量相似度检索基础上叠加业务规则。
✅ 检索能力
- 稠密向量检索:语义相似度搜索,RAG 最常用;
- 混合检索:稠密向量 + 稀疏向量、全文检索(BM25)、正则检索,兼顾语义匹配和关键词精确匹配;
- 多模态支持:文本、图片等多类型 Embedding 都可以存入并检索Chroma。
✅ 灵活嵌入模型支持
不绑定固定 Embedding 模型,可自由接入:OpenAI、Cohere、HuggingFace 开源模型,也可以接入自己训练的自定义向量模型Chroma。
✅ 多语言客户端
原生 Python、TypeScript、Rust 客户端,同时支持嵌入式本地运行,也支持客户端 / 服务端部署模式,多人远程访问向量库。
典型使用场景
- RAG 检索增强生成(最主流) 私有文档、PDF、Markdown 知识库,分片后向量化存入 Chroma。用户提问时,先检索相关片段,再交给 LLM 做回答,降低幻觉。本地 LLM 项目几乎都用它做原型。
- 语义搜索 不是关键词检索,而是按含义搜索。例如客服知识库、产品文档,用户换不同话术提问,依然能找到对应内容。
- 多模态检索 图片向量入库,实现以图搜图,适合简单图片检索原型。
- 内容聚类、去重、推荐 文本向量相似度计算,批量文档聚类、重复内容识别、简单内容推荐。
极简上手示例(Python)
# 安装
# pip install chromadb
import chromadb
# 持久化模式,数据保存在 ./chroma_db
client = chromadb.PersistentClient(path="./chroma_db")
# 创建集合
collection = client.create_collection(name="my_knowledge_base")
# 添加文档,自动生成embedding
collection.add(
documents=["Chroma是开源向量数据库,适合RAG开发", "向量数据库用于语义相似度检索"],
metadatas=[{"source":"blog"}, {"source":"wiki"}],
ids=["doc1", "doc2"]
)
# 语义查询
results = collection.query(
query_texts=["什么是向量数据库"],
n_results=1
)
print(results)
不需要手动生成向量,Chroma 内置 Embedding 函数,直接传入文本即可;当然你也可以传入自己预计算好的向量。
优势与局限
✨ 优点
- 上手成本极低:
pip install chromadb即可本地跑,无需部署独立服务,零运维,非常适合快速验证 RAG 想法; - API 简洁:增删改查、检索、过滤接口简单,核心操作就 4 个;
- 本地优先:嵌入式模式,不需要依赖外部服务,适合本地大模型、离线知识库;
- 开源免费,Apache2.0 协议,商用友好;
- 支持混合检索,兼顾语义 + 关键词检索。
⚠️ 局限
- 大数据量性能有限:适合十万级以内向量原型;千万级以上生产环境,建议考虑 Pinecone、Weaviate、pgvector 等方案;
- 本地嵌入式模式不适合高并发分布式场景;
- 索引类型以 HNSW 为主,调参选项较少。
Chroma 和 FAISS 的简单对比
很多人会混淆 Chroma 与 FAISS:
- FAISS:Meta 的向量检索库,只做向量索引,没有持久化、元数据管理、文档存储,需要自己封装上层业务逻辑;纯底层检索库,速度很强。
- Chroma:完整向量数据库,自带持久化、元数据过滤、文档管理、Embedding 封装,开箱即用;牺牲部分极致性能,换取开发效率。
一句话选择:快速做 RAG 原型选 Chroma;只需要高性能向量检索、愿意自己封装上层逻辑,选 FAISS。
什么时候选 Chroma?
✅ 推荐:
- 快速验证 RAG、本地知识库原型;
- 小体量私有文档(几万分片以内);
- 本地离线 AI 应用,不想部署复杂向量服务;
- 学习向量数据库、LLM 检索流程。
❌ 不推荐:
- 千万级向量、高并发线上生产环境;
- 需要强分布式、多副本、高可用的大规模检索系统。
小结
Chroma 不是为超大规模线上检索而生,它的核心价值是降低向量检索的门槛。如果你正在学习 RAG、搭建本地私有知识库,想快速验证想法而不想折腾复杂基础设施,Chroma 几乎是首选。
当你的项目从原型走向大规模生产,再评估迁移到分布式向量库即可。
官方网站:https://www.trychroma.com/ 文档:https://docs.trychroma.com/