Chroma

chroma2026-09-09 14:10:01

Chroma 是提供向量存储和相似度检索能力的开源数据库产品,可用于语义搜索、文档问答和 RAG 应用。向量数据库是技术类别,Chroma 是其中一个具体实现。

Chroma 属于向量数据库的一种具体实现。在检索增强生成(RAG)中,它可以保存文档、Embedding 和元数据,并根据查询返回候选资料;答案生成、引用校验和权限控制仍由外围应用负责。

核心数据结构

Chroma 使用 Collection 组织数据。一条记录可以包含:

字段 用途
ID 唯一标识记录,便于读取和更新
Embedding 用于相似度检索的向量
Document 与向量关联的原文
Metadata 标题、来源等附加信息,可用于过滤

应用可以传入预先计算的向量,也可以配置 Embedding 函数,让 Chroma 在接收文档或查询文本时调用对应模型生成向量。文档和查询需要使用兼容的嵌入空间。

查询与读取

Chroma 的两类读取操作具有不同用途:

  • query:根据查询文本或向量执行相似度检索,返回最接近的若干条记录,可以结合过滤条件。
  • get:根据 ID 或过滤条件读取记录,不执行相似度排名。

例如,“查找与幼猫喂养有关的资料”适合相似度查询;“读取 ID 为 cat_feeding 的记录”适合按 ID 读取。相似度排名表示候选内容的接近程度,不代表事实正确率。

在应用中的职责

资料 → Embedding 模型 → Chroma 保存向量与关联数据
问题 → Embedding 模型 → Chroma 检索 → 相关资料
相关资料 + 问题 → 大语言模型 → 回答

Chroma 负责数据管理与检索,Embedding 模型负责生成向量,大语言模型负责组织答案。应用仍需处理资料解析、切片、权限控制、上下文组装和引用校验。

运行方式

Chroma 支持本地运行、自托管和 Chroma Cloud 托管服务。Python 入门示例可以使用内存客户端;内存中的数据不会在进程结束后保留,需要持久化时应选择持久化客户端或相应的服务部署方式。

不同客户端和部署模式的配置有所区别,应根据所用版本的官方文档选择。实际检索效果需要结合模型、资料和查询进行验证。

参考资料

本页目录