核心功能
Chroma 是核心用 Rust 编写的开源向量数据库,主打最短接入路径:装完包后三行代码就能建集合、写入原始文本并检索,向量化自动完成。适合做 RAG 原型和中小规模应用的开发者。相比要先部署服务端的同类,它可先在进程内跑,再切到落盘、client-server 或 Chroma Cloud。
功能亮点
文本直接入库
collection.add 只传 ids 与 documents,向量化自动完成
四形态同 API
内存态、PersistentClient、HttpClient 与云端共用一套接口
命令行管库
chroma run --path 一句起本地服务,另有 chroma db 系列命令
单节点部署轻
docker run -p 8000:8000 chromadb/chroma 起服务端
适用场景
• 在 Jupyter Notebook 里快速验证 RAG 检索效果,用内存态客户端跑完即弃
• 本地知识库工具,用 PersistentClient 把数据落到磁盘目录并在启动时自动加载
• 小型应用的检索后端,docker run 起单节点服务后由各语言客户端通过 HTTP 接入
安装配置
bash
Python: pip install chromadb JavaScript / TypeScript: npm install chromadb @chroma-core/default-embed Rust: cargo add chroma 以 client-server 模式在本地起服务(数据落到指定目录): chroma run --path /db_path npm 环境下等价命令: npx chroma run --path ./getting-started Docker: docker pull chromadb/chroma docker run -p 8000:8000 chromadb/chroma 说明:服务端默认地址是 http://localhost:8000;--path 不指定时默认目录为 .chroma。
使用方法
javascript
Python 完整示例(内存态客户端):
import chromadb
chroma_client = chromadb.Client()
# 用 get_or_create_collection 避免每次都新建集合
collection = chroma_client.get_or_create_collection(name="my_collection")
# 用 upsert 避免重复写入同样的文档
collection.upsert(
documents=[
"This is a document about pineapple",
"This is a document about oranges"
],
ids=["id1", "id2"]
)
results = collection.query(
query_texts=["This is a query document about florida"], # Chroma 会自动为这句话生成向量
n_results=2
)
print(results)
数据落盘(PersistentClient):
import chromadb
client = chromadb.PersistentClient(path="/path/to/save/to")
连接独立部署的服务端:
import chromadb
chroma_client = chromadb.HttpClient(host='localhost', port=8000)
TypeScript:
import { ChromaClient } from "chromadb";
const client = new ChromaClient();
const collection = await client.getOrCreateCollection({
name: "my_collection",
});
await collection.upsert({
documents: [
"This is a document about pineapple",
"This is a document about oranges",
],
ids: ["id1", "id2"],
});
const results = await collection.query({
queryTexts: ["This is a query document about florida"],
nResults: 2,
});关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Chroma
价格免费增值
开源是
上手难度入门
相关工具
优点
- Python / TypeScript 客户端接收原始文本即可,官方 quickstart 从安装到检索只有 add 与 query 两步
- Apache 2.0 开源,核心用 Rust 实现,官方同时维护 Python、TypeScript、Rust 三种客户端
- 内存态、PersistentClient、HttpClient、CloudClient 共用一套 API,切换运行形态基本不改业务代码
- 自带 CLI,chroma run 起本地服务、chroma db connect --env-file 生成云端连接配置都是单条命令
缺点
- 官方 getting started 用的是 in-memory 客户端,程序结束数据即丢失,持久化必须改用 PersistentClient 或 client-server 模式
- JS/TS 客户端不能嵌入式运行,必须先用 npx chroma run 或 Docker 起一个 Chroma server 才能连接
- Rust 客户端不做自动向量化,官方说明需要先用模型 SDK 生成 embedding 再随文档一起传入
- client.reset() 会清空并重置整个数据库,官方以 WARNING 标注为破坏性且不可逆的操作