Chroma 是一个面向 AI 应用的开源嵌入数据库,定位于为构建带记忆的大语言模型应用提供 AI 原生数据存储。其许可证为 Apache 2.0,资料列出的版本为 v1.3.3,并以周为单位发布更新,GitHub 约有 24,300+ 星标、1,900+ 复刻。
【用途】 资料建议在以下情况使用 Chroma:构建 RAG(检索增强生成)应用;需要本地或自托管的向量数据库;希望使用开源方案;在 Notebook 中做原型验证;对文档做语义搜索;存储带元数据的嵌入向量。若需要托管云与自动扩缩容,资料列出的替代方案是 Pinecone;若只需要纯相似度搜索且不需要元数据,可考虑 FAISS;面向生产环境的 ML 原生数据库可考虑 Weaviate;高性能 Rust 实现可考虑 Qdrant。
【主要能力】
- 集合管理:创建集合、指定自定义嵌入函数、获取已有集合、删除集合。
- 文档写入:支持传入文档文本与元数据、指定 ID,也支持直接写入自定义嵌入向量。
- 查询检索:按查询文本做相似度搜索,可指定返回数量 n_results,并能结合元数据过滤;结果包含 documents、metadatas、distances、ids。
- 读取与修改:按 ID 或过滤条件获取文档,支持限制返回条数;支持更新文档内容与元数据;支持按 ID 或过滤条件删除。
- 持久化存储:通过 PersistentClient 指定路径写入磁盘,之后以相同路径重新加载集合。
- 嵌入函数:默认使用 Sentence Transformers(资料注明默认模型为 all-MiniLM-L6-v2);支持 OpenAI 嵌入函数(示例模型 text-embedding-3-small)、HuggingFace 嵌入函数,以及自定义 EmbeddingFunction。
- 元数据过滤:支持精确匹配、比较运算符($gt、$gte、$lt、$lte、$ne)、逻辑运算符($and、$or)以及 $in 包含匹配。
- 服务端模式:可通过 chroma run --path ./chroma_db --port 8000 启动服务,并用 HttpClient 连接,示例中可关闭匿名遥测。
- 框架集成:资料给出 LangChain(langchain_chroma 的 Chroma 向量存储、from_documents、similarity_search、as_retriever)与 LlamaIndex(ChromaVectorStore、VectorStoreIndex、查询引擎)的集成代码示例。
【使用方式】 安装:Python 使用 pip install chromadb;JavaScript/TypeScript 使用 npm install chromadb @chroma-core/default-embed。基本流程为:创建客户端(内存 Client 或 PersistentClient)、创建或获取集合、调用 add 写入文档与元数据、调用 query 做检索。资料中的完整 Python 示例展示了创建集合并写入两条文档后按文本查询并打印结果。
【适用场景】 适合 RAG 检索层、文档语义搜索、带元数据条件的知识库检索、Notebook 原型、需要本地自托管与持久化的向量存储场景,以及已在 LangChain 或 LlamaIndex 技术栈中的项目。
【限制与注意事项】 资料未提供具体价格与收费信息、云托管服务细则、集群与高可用方案、具体数据规模上限或基准测试数据,这些暂未提供。资料中的性能表仅为参考数值:写入 100 条文档约 1-3 秒(含嵌入),top 10 查询约 50-200 毫秒(取决于集合大小),元数据过滤约 10-50 毫秒。资料建议使用持久化客户端避免重启丢数据、添加元数据以便过滤与追踪、批量写入、选择合适的嵌入模型以平衡速度与质量、使用过滤器缩小检索范围、保证 ID 唯一、定期备份 chroma_db 目录、监控集合规模、测试嵌入函数质量,并在生产环境使用服务端模式以支持多用户。