ChromaDB 是什么、怎么用:安装、建集合、写入与查询(Python 快速上手)

ChromaDB 是什么、怎么安装和使用?按 Chroma 官方文档讲清它的定位、pip 安装、内存客户端与持久化的区别、创建集合、add 与 upsert 写入文档、query 查询与返回结果的结构、按元数据过滤,以及拿它做 RAG 检索时的几个注意点。

NNathaniel bigo··原创首发·AI 辅助撰写
7 分钟读完
资料核对于 2026-10-11 · 依据官方文档与公开资料整理 免费账号 账号
本文根据 Chroma 官方文档《Getting Started》和官方仓库 README 整理,资料核对于 2026-10-11。文中代码取自官方页面,没有在本机运行验证。

适用于谁

  • 搜「chromadb 是什么」「chromadb 安装」「chromadb 教程」「chromadb python」的人;
  • 想给大模型加一个「先检索资料再回答」的环节,需要一个最简单的向量库来起步的人;
  • 在 Dify 之类的平台上用过知识库,想弄明白底下那一层在做什么的人。

结论先说

  1. Chroma 是一个开源的向量数据库(官方现在的说法是面向 AI 的开源数据基础设施),Apache 2.0 许可。
  2. pip install chromadb 之后几行代码就能用,不需要单独启动服务。
  3. 你给文本,它负责向量化和索引。官方说明:分词、嵌入、索引都自动处理;也可以跳过这一步,传入你自己算好的向量。
  4. chromadb.Client() 是内存客户端,程序结束数据就没了。要保存数据,用持久化客户端或者客户端-服务器模式。
  5. 查询返回的是「列表的列表」,因为可以一次查多个问题。

一、向量数据库是干什么的

把一段文字交给嵌入模型,会得到一串数字(向量)。意思相近的文字,向量也相近。向量数据库做两件事:把文档和它们的向量存起来;给一个问题,找出向量最接近的几段文档。

这就是 RAG(检索增强生成)里「检索」那一步:先从你的资料里找出相关片段,再把片段连同问题一起交给大模型。分段和检索参数怎么影响效果,可以对照《Dify 知识库搭建教程》里的说明,原理是相通的。

二、安装

bash
pip install chromadb

官方还列了 Poetry(poetry add chromadb)和 uv(uv pip install chromadb)的写法。JavaScript 客户端是 npm install chromadb。

三、创建客户端和集合

python
import chromadb
chroma_client = chromadb.Client()

这是内存客户端,适合试验,程序结束后数据不保留。

集合(collection)相当于一张表,用来放一组文档:

python
collection = chroma_client.create_collection(name="my_collection")

脚本会反复运行时,用下面这个,避免每次都新建:

python
collection = chroma_client.get_or_create_collection(name="my_collection")

四、写入文档

python
collection.add(
    ids=["id1", "id2"],
    documents=[
        "This is a document about pineapple",
        "This is a document about oranges"
    ]
)
  • documents:原文。Chroma 会保存文本,并自动完成嵌入和索引;
  • ids:每条文档一个唯一的字符串 ID,必须自己提供。

还可以带上元数据,README 的例子:

python
collection.add(
    documents=["This is document1", "This is document2"],
    metadatas=[{"source": "notion"}, {"source": "google-docs"}],
    ids=["doc1", "doc2"],
)

元数据用来记录来源、日期、类别等信息,之后可以按它过滤。

add 还是 upsert:官方建议把 add 换成 upsert,这样同一个脚本重复运行时,不会把同样的文档反复添加:

python
collection.upsert(
    documents=[
        "This is a document about pineapple",
        "This is a document about oranges"
    ],
    ids=["id1", "id2"]
)

五、查询

python
results = collection.query(
    query_texts=["This is a query document about hawaii"], # Chroma will embed this for you
    n_results=2 # how many results to return
)
print(results)
  • query_texts:一个列表,可以同时放多个问题,Chroma 会替你把它们向量化;
  • n_results:每个问题返回几条。官方说明不写时默认返回 10 条。

返回结果的结构是一个字典,主要的键:

键内容
ids命中文档的 ID,形如 [['id1', 'id2']]
documents命中的原文
distances距离,数值越小越相似
metadatas元数据,没有添加元数据时为 None

每个值都是「列表的列表」:外层对应每个问题,内层是该问题的结果。只查了一个问题时,取 results["documents"][0]。

过滤(README 的注释里给出的两个可选参数):

  • where={"metadata_field": "is_equal_to_this"}:按元数据过滤;
  • where_document={"$contains":"search_string"}:按文档内容是否包含某段文字过滤。

另外可以用 .get 按 ID 直接取文档。

六、保存数据

内存客户端不保留数据。两条路:

  • 持久化客户端:把数据存到本地磁盘,官方入门页指向了专门的文档;
  • 客户端-服务器模式:单独运行一个 Chroma 服务,应用通过网络连接。README 给的启动命令:
bash
chroma run --path /chroma_db_path

官方还有托管的 Chroma Cloud,提供无服务器的向量、混合和全文检索,页面上写新用户有 5 美元的免费额度(2026-10-11 核对,以官网为准)。

七、拿来做 RAG 时的注意点

  • 写入和查询必须用同一个嵌入模型。换了模型,原来存的向量就对不上了,需要重建;
  • 默认的嵌入模型未必适合中文。官方入门页没有写默认用的是哪个模型;处理中文资料时,查一下官方的 Embedding Functions 文档,选一个支持中文的模型,或者自己算好向量再传入;
  • 先分段再写入。一整篇长文档作为一条写入,检索出来的也是一整篇,既不准也浪费上下文。按段落或小节切开,每段一条;
  • ID 要稳定。用「文档路径 + 段落序号」这类可以重复生成的 ID,配合 upsert,更新文档时才不会产生重复;
  • 元数据提前设计。来源、更新时间、权限范围,之后过滤时都用得上。

常见问题

Q:需要 GPU 吗?

官方入门页没有提硬件要求。数据量不大时在普通电脑上就能试;嵌入模型的计算量取决于你选的模型。

Q:和 Milvus、pgvector 怎么选?

Chroma 上手最简单,适合原型和中小规模;已经在用 PostgreSQL 的看《pgvector 是什么》;预计数据量很大、之后要上集群的看《Milvus Lite 使用教程》。

Q:可以完全离线用吗?

数据库本身在本地运行。自动嵌入需要用到嵌入模型,模型从哪里获取、是否需要联网,以官方 Embedding Functions 文档为准。

Q:结果不准怎么办?

先看检索出来的片段对不对。片段不对,调分段方式或换嵌入模型;片段对但回答不对,问题在提示词或模型。

参考资料

  • Getting Started(Chroma 官方文档):https://docs.trychroma.com/docs/overview/getting-started
  • chroma-core/chroma(官方仓库):https://github.com/chroma-core/chroma

Nathaniel 的更多内容

  1. 01

    promptfoo 使用教程:对比提示词和模型、写断言自动评测(安装与配置)

    promptfoo 是什么、怎么使用?按官方 README 和入门文档讲清它的用途、三种安装方式、用示例项目起步、promptfooconfig.yaml 里提示词、模型和测试用例三部分怎么写、常用断言类型的含义、eval 与 view 两条命令,以及把它放进日常改提示词流程的方法。

    ChatGPT其他 AI 工具0
  2. 02

    Kimi API怎么用:API Key获取、Python调用、K3价格与429报错处理

    Kimi API Key 在哪里获取、怎么用 Python 调用 K3、价格怎么算、429 和 401 报错怎么办?本文按 Kimi API 开放平台官方文档讲清注册认证、创建 Key、base_url 与模型名、计费规则和常见错误排查。

    Kimi0
  3. 03

    Cursor Agent 模式怎么用:Agent、Plan、Ask 三种模式,检查点回滚与消息排队

    Cursor Agent 模式是什么、和 Plan / Ask 模式怎么选?按官方文档讲清 Agent 能调用哪些工具、Shift+Tab 切换模式、Plan 模式先出方案再动手、用检查点撤销改动、任务进行中排队或插话,以及 /goal 长目标。

    Cursor0
  4. 04

    Gemini 聊天记录怎么导出:导出到文档 / 表格、生成 PDF 与用 Takeout 批量导出完整对话

    Gemini 没有「一键导出全部对话」的按钮,但有三条官方路径:单条回答导出到 Google 文档、Gmail、表格;让 Gemini 直接生成 PDF、Word、Markdown 文件;用 Google Takeout 批量下载全部活动记录。本文给出每种方法的步骤和限制。

    Gemini0
  5. 05

    ChatGPT 生成图片中文乱码、文字错误怎么办:7 个按顺序试的办法

    让 ChatGPT 做海报、封面、信息图,中文总是缺笔画、错字、乱码?本文按 OpenAI 官方图像提示指南,给出从写法、字数、局部修改、质量档位到后期排版的 7 个办法,以及什么时候干脆别让 AI 写字。

    ChatGPT0
  6. 06

    OpenCode Skills 使用指南:技能目录、命名规则、权限配置与不加载排查

    OpenCode 的 Skills 放在哪个目录、怎么控制哪些技能能用?按 OpenCode 官方文档讲清六个扫描位置、name 的正则规则、skill 工具的工作方式、在 opencode.json 里用 allow / deny / ask 配置权限、按智能体覆盖,以及技能不出现时的五项检查。

    其他 AI 工具0

同产品的其他教程

  1. 01

    MinerU 是什么、怎么用:把 PDF 等文档解析成 Markdown(4.0 的安装、四档解析与命令)

    MinerU 是什么、怎么安装使用?按官方中文 README 讲清 4.0 版本的定位、支持的输入与输出格式、flash / basic / standard / advanced 四档解析各适合什么、pip 安装命令、mineru-kit 与 mineru 两个命令的分工和常用写法,以及从旧版升级要注意什么。

    其他 AI 工具0
  2. 02

    npx skills add 怎么用:从 GitHub 安装 Skill、skills.sh 是什么与常用命令

    网上的 Skill 安装命令大多是 npx skills add 开头,它是什么、装到哪去了?按官方 README 讲清 skills 命令行工具支持的来源写法、项目与全局两种范围、-a 指定工具、list / find / update / remove 等命令、软链接与复制的区别,以及怎么关掉遥测。

    Claude其他 AI 工具0
  3. 03

    即梦首尾帧怎么用:两张图生成过渡视频(在哪里、提示词、不能用怎么办)

    即梦首尾帧在哪里、怎么用?本文讲清首尾帧入口、哪些模型支持、两张图的比例要求、过渡提示词怎么写,以及「首尾帧不见了 / 不能用了」「画面跳变」的原因和解决办法。

    其他 AI 工具0
  4. 04

    DeepSeek怎么用:网页版与手机App入门(深度思考、智能搜索、上传文件)

    DeepSeek怎么用?本文从官方入口和登录方式讲起,说清输入框里的「深度思考」「智能搜索」和上传附件各管什么,历史对话怎么改名、置顶、分享和导出,以及手机上使用的注意点。

    其他 AI 工具0
  5. 05

    文心一言网页版怎么用:改名「文心」后的入口、对话与工作任务、PPT生成

    文心一言现在叫什么、网页版入口在哪、怎么用?本文按百度文心官网和 App Store 官方页面讲清「文心」的新入口、对话与工作两种模式、图片生成和帮我写作、任务托管与 AIPPT、知识库和定时任务从哪开始。

    其他 AI 工具0
  6. 06

    Trae 规则与 MCP 配置教程:.trae/rules 四种生效方式、导入 AGENTS.md、添加 MCP Server

    Trae rules 怎么配置、Trae 怎么用 MCP?按 TRAE 官方中文文档讲清全局规则与项目规则的位置、四种生效方式、子目录与多层嵌套、导入 AGENTS.md / CLAUDE.md、提交信息规则,以及从市场添加和手动配置 MCP Server、项目级 mcp.json。

    其他 AI 工具0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~