GitHub: chroma-core/chroma
Stars: 28,400+ | Language: Rust (69.1%), Python (15.7%), TypeScript (6.7%) | License: Apache 2.0
官网: trychroma.com | 最新版本: v1.5.9 (2026-05-05)
目录
项目速览
Chroma 由 chroma-core 团队开发,定位为”the open-source data infrastructure for AI”,是目前最易上手的 AI 原生向量数据库之一。截至 2026 年 6 月,项目在 GitHub 上已获得超过 28,400 颗 Star,累计发布 137 个版本,社区活跃度持续攀升。
Chroma 的核心理念是”极简”:核心 API 仅包含 4 个方法,开发者几乎无需学习成本即可在 AI 应用中集成向量存储与语义检索能力。它同时支持内存模式(零配置原型开发)和持久化模式(生产环境部署),并提供 Chroma Cloud 托管服务。Chroma 的设计哲学是”batteries-included”:开箱即用地自动完成文本分词、Embedding 生成和索引构建,同时也支持用户自定义 Embedding 函数与向量索引策略。
Chroma 的典型用户画像覆盖从独立开发者到中小团队的广泛群体——那些需要一个”just works”的向量数据库,而不是花数小时配置集群和调优参数。
功能概述
极简核心 API — 只有 4 个方法
Chroma 的设计哲学极度推崇简洁。核心 API 仅包含 add、query、get、delete 四个方法,几乎不需要阅读文档即可凭直觉使用:
import chromadb |
返回结果包含 ids、documents、distances、metadatas 四个字段,结构清晰可直接使用。
零配置嵌入:DefaultEmbeddingFunction
在未指定 Embedding 函数时,Chroma 使用内置的 DefaultEmbeddingFunction(基于 all-MiniLM-L6-v2 模型),完全零配置即可运行。这意味着首次使用时无需注册任何 API Key,极大降低了入门门槛。
自定义 Embedding 函数
对于生产级场景,Chroma 支持灵活的 Embedding 函数定制:
from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction |
开发者还可以通过继承 EmbeddingFunction 基类并实现 __call__ 方法来注册自定义 Embedding 函数,支持 @register_embedding_function 装饰器的热插拔注册机制。
元数据过滤与混合检索
Chroma 支持在查询时基于元数据进行精确过滤。结合向量相似度检索和元数据条件筛选,可实现”语义相似 + 条件约束”的混合检索。where 过滤条件支持 $eq、$ne、$gt、$gte、$lt、$lte、$in、$nin 等丰富操作符,以及 $and、$or 逻辑组合。
多模态与 Chroma Cloud
Chroma 支持多模态 Embedding(图片、音频等),通过自定义 Embedding 函数可将任意模态的数据映射到向量空间。Chroma Cloud 提供全托管服务,支持向量检索、全文检索和混合检索(hybrid search),SDK 覆盖 Python 和 JavaScript/TypeScript。
适用场景
快速原型开发与 Hackathon
Chroma 的最大优势在于其极致简单。在内存模式下,只需 pip install chromadb 并写 5 行代码,即可拥有一个功能完备的向量数据库。对于需要快速验证 RAG 想法的原型开发、Hackathon 项目或课程实验,Chroma 是最佳选择。
中小规模 RAG 知识库
当文档量在十万到百万级别时,Chroma 的持久化模式可以提供稳定可靠的向量检索服务。结合 LangChain、LlamaIndex 等框架的 Chroma 集成,可以快速搭建企业文档问答、客服知识库等 RAG 系统。
本地优先的 AI 应用
Chroma 的内存模式和轻量持久化非常适合运行在用户本地的 AI 应用中。例如,桌面端的个人知识管理工具、本地代码库语义搜索等场景,Chroma 的零配置特性使其成为理想的嵌入方案。
教育与学习
Chroma 极简的 API 设计使其成为教学向量数据库和 RAG 概念的理想工具。学生可以在几分钟内上手,直观理解向量嵌入、语义相似度检索等核心概念。
Agent 记忆存储
在 AI Agent 系统中,Chroma 可以作为 Agent 的长期记忆存储后端。Agent 将历史对话、用户偏好、任务经验等以向量的形式存储,在需要时通过语义检索召回相关记忆。
快速上手
环境要求
- Python 3.9+
- (可选)OpenAI API Key(使用 OpenAI Embedding 时需要)
安装
pip install chromadb |
最简示例:内存模式 RAG
import chromadb |
持久化模式
import chromadb |
源码架构
Chroma 采用 Rust + Python 混合架构,核心引擎用 Rust 编写以获得极致性能,Python 层提供用户友好的 API 接口:
chroma/ |
- **rust/**:Chroma 的性能核心。向量索引基于 HNSW 算法实现,在 Rust 层面完成全部计算密集型操作。数据分段(segment)机制支持高效的增删改和压缩。
- **chromadb/**:面向开发者的 Python 层,封装了 FastAPI 服务端、数据库抽象、Embedding 函数管理等。API 设计严格遵循”simple things simple, complex things possible”原则。
- **chromadb/api/**:提供两种服务端模式——本地嵌入模式(嵌入式 Chroma 直接运行在应用中)和客户端-服务器模式(通过 HTTP/gRPC 连接远程 Chroma 实例)。
- **chromadb/utils/embedding_functions/**:内置 OpenAI、Cohere、HuggingFace、SentenceTransformers 等多种 Embedding 函数,同时支持自定义注册。
实操 Demo
下面是一个完整的 RAG 问答系统 Demo,演示 Chroma 与 LangChain 集成,从网页加载文档到语义检索问答。
""" |
运行前提:
pip install langchain langchain-community langchain-openai langchain-text-splitters chromadb |
同类对比
| 特性 | Chroma | Qdrant | Weaviate | Milvus |
|---|---|---|---|---|
| Stars | 28,400+ | 32,300+ | 16,300+ | 44,800+ |
| 核心语言 | Rust | Rust | Go | Go |
| 部署复杂度 | 极低(pip install) | 低(Docker / 嵌入式) | 中等(Docker Compose) | 中高(K8s 推荐) |
| API 复杂度 | 极简(4 个核心方法) | 丰富(REST + gRPC) | 丰富(GraphQL + REST + gRPC) | 丰富(Python/Java/Go/Node SDK) |
| 内置 Embedding | 是(all-MiniLM-L6-v2) | 否(需手动计算) | 是(OpenAI/Cohere/HF 等) | 否(需手动计算) |
| 混合检索 | Chroma Cloud 支持 | RRF / DBSF 融合 | BM25 + 向量混合 | BM25/SPLADE + 向量混合 |
| 分布式扩展 | Chroma Cloud | 水平分片 + 复制 | 水平扩展 + 复制 | 存算分离 + K8s 原生 |
| 最佳数据规模 | 中小规模(万~百万级) | 中大规模(百万~亿级) | 中等规模(万~亿级) | 大规模(亿~千亿级) |
| 学习曲线 | 极低 | 低 | 中等 | 中高 |
分析:Chroma 的核心定位是”最简单易用的向量数据库”。它的优势不在于性能极限或大规模分布式能力,而在于开箱即用的开发体验。对于那些不需要处理十亿级向量数据的场景,Chroma 是一个性价比极高的选择。5 个核心 API 方法、内置 Embedding、零配置内存模式,让开发者可以在几分钟内将向量检索集成到应用中。当项目成长到需要分布式扩展时,可以迁移到支持更完善的 Milvus 或 Qdrant。
参考资源
- GitHub 仓库: https://github.com/chroma-core/chroma
- 官方文档: https://docs.trychroma.com/
- Chroma Cloud: https://www.trychroma.com/cloud
- Python SDK 文档: https://docs.trychroma.com/docs/overview/getting-started
- Embedding 函数参考: https://docs.trychroma.com/docs/embeddings/embedding-functions


