介绍
ChromaDB 是AI原生、轻量级、开源嵌入式向量数据库,专为 LLM/RAG、语义检索、AI Agent 记忆系统设计,主打“开箱即用、本地优先、极简API”,是当前 AI 圈最普及的轻量向量库之一。
- 全称:Chroma(官方简称,常称 ChromaDB)
- 开发主体:Chroma Labs(AI 初创公司),核心维护者 Jeff Huber
- 开源协议:Apache 2.0(完全免费,商用无限制)
- 首次发布:2023年
- 最新版本:0.5.x(2026年3月)
- GitHub 星数:≈15.8k(AI 向量库中关注度最高)
- 支持语言:Python(主),支持 JavaScript/Go/REST API
定位
- 专为 AI 场景:深度适配 LLM、RAG、语义搜索、AI Agent 记忆存储
- 本地优先:默认嵌入式运行,零依赖、无需独立服务进程
- 极简开发:API 极度简洁,降低向量数据库使用门槛
- 嵌入式/服务化双模式:既可嵌入应用,也可独立部署为服务
设计哲学
- 简单即强大:核心 API 仅 4 个主函数,5 分钟上手
- 开发者友好:屏蔽底层向量索引细节,专注业务逻辑
- 灵活扩展:从原型到轻量生产平滑过渡,支持多模态向量
优缺点
成熟度
- 优点:
- 社区活跃,文档完善,问题解决快
- API 稳定,迭代快,bug 修复及时
- 轻量无运维,部署成本极低
- 缺点:
- 分布式能力弱,无官方集群方案
- 大规模性能不如专业向量库(如 Pinecone/Qdrant)
- 高级功能(如实时更新、分片)有限
生产环境建议
- 适合:
- 中小团队 RAG 系统(≤100万向量)
- AI 原型快速落地
- 内部工具、低并发场景
- 不适合:
- 互联网高并发、超大规模向量检索
- 强一致性、事务型业务
应用场景
首选场景
- RAG 系统:企业知识库问答、文档检索、客服机器人(最主流)
- AI Agent 记忆:长期记忆存储、上下文管理、用户偏好检索
- 语义搜索:内部文档、产品库、内容平台的语义检索
- 轻量推荐:内容/商品个性化推荐(小体量)
- 多模态检索:文本+图像/音频的跨模态搜索
不适合场景
- 超大规模向量(>1000万):扩展性有限,无分布式集群
- 强事务/高并发:不支持 ACID 事务,并发写入性能一般
- 大数据融合:与 Spark/Flink 等大数据生态集成弱
核心架构(分层设计)
┌─────────────────────────────────────────┐
│ 应用层(Python/JS/REST API) │
│ - 核心 API:Collection 增删改查 │
│ - 嵌入函数(自动/自定义) │
└─────────────────────┬───────────────────┘
┌─────────────────────┴───────────────────┐
│ 核心层(Chroma Core) │
│ - 集合管理:创建/删除/加载 Collection │
│ - 向量处理:存储/索引/ANN 检索 │
│ - 元数据过滤:PQL 语法复杂查询 │
└─────────────────────┬───────────────────┘
┌─────────────────────┴───────────────────┐
│ 存储层(Storage Backend) │
│ - 内存存储(默认,临时) │
│ - 持久化:SQLite(默认)/DuckDB │
│ - 索引:HNSW(默认)/Flat(精确检索) │
└─────────────────────────────────────────┘
概念
1. Collection(集合)
- 类比关系型数据库的 “表”,是向量+元数据+原始文档的一体化容器
- 支持独立配置:距离度量、嵌入函数、索引参数
- 一个客户端可管理多个 Collection,实现数据隔离
2. 核心数据结构(每条记录)
- ids:唯一标识(字符串,必填)
- embeddings:高维向量(如 768/1536 维,自动生成或手动传入)
- documents:原始文本/内容(可选,Chroma 可自动生成向量)
- metadatas:JSON 元数据(如来源、时间、标签,用于过滤)
3. 距离度量(支持 3 种)
- L2(欧氏距离,默认):适合稠密向量、常规语义检索
- cosine(余弦相似度):适合文本语义、归一化向量
- ip(内积):适合推荐系统、协同过滤场景
4. 索引算法
- HNSW(默认):分层可导航小世界,百万级向量毫秒级检索
- Flat:暴力精确检索,适合小数据量(≤10万)、追求100%准确率
特性
1. 部署模式(灵活适配)
- 嵌入式模式(默认):直接嵌入 Python/JS 应用,零配置、无服务进程,适合原型/本地开发
- 持久化模式:数据落地 SQLite/DuckDB 文件,重启不丢失
- 服务模式:
chroma run启动 REST 服务,支持多客户端、分布式访问 - Docker 部署:一键容器化,适配云原生/生产环境
2. 嵌入函数(自动/自定义)
- 内置嵌入:轻量级本地模型,无需外部 API,开箱即用
- 第三方集成:无缝对接 OpenAI、Cohere、HuggingFace、Sentence-BERT 等
- 自定义嵌入:支持传入预计算向量,适配任何模型
3. 检索能力(向量+元数据双引擎)
- 语义检索:基于向量相似度,返回最相关结果
- 元数据过滤(PQL 语法):支持
$and/$or/$gt/$lt/$contains等复杂条件,先过滤再检索,大幅提升效率 - MMR(最大边际相关性):解决结果冗余,返回多样化结果
- 分页/排序:支持结果分页与自定义排序
4. 多模态支持
- 不仅支持文本向量,还可存储图像(CLIP)、音频、视频等多模态向量,实现跨模态检索
5. 生态集成(AI 开发必备)
- 深度集成:LangChain、LLamaIndex、AutoGPT、LangGraph 等主流 AI 框架的默认轻量向量库
- 多语言客户端:Python、JavaScript、Go、REST API,适配全栈开发
- 工具链:支持 Jupyter/Colab、CLI、可视化工具
安装
pip 安装
pip install chromadb
poetry 安装
poetry add chromadb
服务模式启动
一般不用
chroma run --path ./chroma_data
例子
1. 创建对象
import chromadb
# 1. 内存客户端(临时,测试用)
client = chromadb.Client()
# 2. 持久化客户端(数据落地文件)
# client = chromadb.PersistentClient(path="./chroma_data")
# 3. 服务端客户端(连接独立服务)
# client = chromadb.HttpClient(host="localhost", port=8000)
2. 集合管理
# 创建集合(不存在则创建,存在则获取)
collection = client.get_or_create_collection(
name="my_knowledge_base",
metadata={"description": "内部文档知识库"},
embedding_function=chromadb.utils.embedding_functions.DefaultEmbeddingFunction()
)
# 删除集合
# client.delete_collection(name="my_knowledge_base")
3. 添加数据(自动嵌入+索引)
collection.add(
documents=[
"ChromaDB 是轻量级向量数据库,专为 RAG 设计",
"LanceDB 基于 Arrow,适合大数据+向量融合场景"
],
metadatas=[
{"source": "技术博客", "category": "向量库"},
{"source": "技术博客", "category": "向量库"}
],
ids=["doc_001", "doc_002"]
)
4. 检索(语义+过滤)
# 基础语义检索
results = collection.query(
query_texts=["轻量级 RAG 向量库"],
n_results=2,
# 元数据过滤:只查 category=向量库
where={"category": "向量库"},
# 文档内容过滤:包含 Chroma
where_document={"$contains": "Chroma"}
)
# 结果返回:ids、distances、documents、metadatas
print(results["documents"])
性能与规模
生产环境参考
- 数据规模:单机支持 百万级向量(HNSW 索引)
- 检索延迟:百万向量下
<10ms(HNSW) - 内存占用:轻量,百万向量内存占用
<1GB - 写入性能:每秒数千条向量写入(取决于硬件)
- 适用上限:≤100万向量的轻量生产场景;超百万建议考虑 LanceDB/Qdrant 等
与 LanceDB 差异(选型)
| 维度 | ChromaDB | LanceDB |
|---|---|---|
| 定位 | AI/RAG 优先,轻量嵌入式 | 大数据+向量融合,列式存储 |
| 星数 | ≈15.8k(AI 圈高) | ≈7.2k(大数据圈高) |
| 存储 | SQLite/DuckDB | Lance(Arrow 列式) |
| 生态 | LangChain/LLM 原生 | Pandas/Spark/Arrow 原生 |
| 规模 | ≤100万向量 | ≤1000万向量 |
| 生产 | 轻量 RAG/AI Agent | 大数据+向量、企业级生产 |
总结
ChromaDB 是AI 开发者的首选轻量向量库,以极简 API、零依赖部署、深度 AI 生态集成,成为 RAG/AI Agent 开发的事实标准。适合快速原型、中小规模 RAG 生产;若需大数据融合、更大规模向量,建议选择 LanceDB 等更专业的向量数据库。