首页/AI/RAG 与向量库速查/Chroma 快速上手

Chroma 快速上手

Chroma 以轻量著称:几分钟内即可跑起向量检索,支持内存与本地持久化模式,自带默认 embedding 函数与集合 API,常用于原型验证与小型知识库。

RAG 与向量库速查AI更新于 2026-10-13

Chroma 是什么

Chroma 以轻量著称:几行代码就能跑起向量检索,支持内存模式与本地持久化(PersistentClient),自带默认 embedding 函数与集合 API,常用于原型验证、教学演示与小型知识库。它的定位是先把链路跑通再谈规模;数据量与并发上来之后,通常需要换成服务化向量库或自建方案。

基本信息

运行模式内存模式与本地持久化(PersistentClient)
默认能力内置默认 embedding 函数,也可替换为自定义函数
距离空间通过集合 metadata 里的 hnsw:space 配置
适用边界原型与小型知识库,大规模高并发建议换库

典型使用场景

  • 原型验证:验证检索与问答链路是否走得通,不必先搭集群
  • 本地文档助手:个人资料库或团队小语料,单机即可运行
  • 教学演示:几行代码展示向量检索原理,环境依赖少
  • 离线实验:快速试不同切分与检索参数的效果差异
  • 测试替身:单元测试里用内存模式模拟向量库,避免依赖外部服务

持久化客户端与集合

持久化客户端与集合
import chromadb

client = chromadb.PersistentClient(path="./chroma_db")   # 本地持久化目录
col = client.get_or_create_collection(
    name="kb",
    metadata={"hnsw:space": "cosine"},   # 距离空间建库时确定
)
col.add(ids=["c1", "c2"], documents=["第 1 段文本", "第 2 段文本"],
        metadatas=[{"source": "faq"}, {"source": "faq"}])
res = col.query(query_texts=["文本检索"], n_results=3)
print(res["ids"], res["distances"])       # 文本查询会走 embedding 函数

常用操作与注意

操作方法注意
创建集合get_or_create_collection距离空间建库时确定,事后改动要重建
写入add 或 upsert两者在重复 id 上的语义不同,需确认
查询query 支持文本或向量文本查询依赖所配 embedding 函数
删除按 id 或条件删除删除后核对集合计数
默认 embedding 函数适合快速演示;中文场景建议显式接入自己的 embedding 函数并统一维度,否则换模型时向量全部失效。
持久化目录要纳入备份范围:只备份源文档而不备份向量库,恢复时需要重新解析与向量化,耗时可能远超备份本身的成本,且结果未必可复现。
升级或迁移前先导出校验:把集合计数与若干固定查询的结果存下来,迁移后逐条比对;没有这份对照,很难判断新环境里的检索是否与原来一致。

易错点

  • 生产规模直接用内置默认 embedding,模型不可控且升级会改变向量
  • 距离空间配置(hnsw:space)与业务相似度预期不一致,分数含义理解出错
  • 未固定 embedding 函数版本,重新入库后新旧向量混存
  • 把原型参数直接用于生产,未评估并发与数据量下的表现

数据来源与参考

  • Chroma 官方文档(Getting Started / PersistentClient)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌