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 入门示例可以使用内存客户端;内存中的数据不会在进程结束后保留,需要持久化时应选择持久化客户端或相应的服务部署方式。
不同客户端和部署模式的配置有所区别,应根据所用版本的官方文档选择。实际检索效果需要结合模型、资料和查询进行验证。