SuperAPI AI 工具集

chroma

数据与分析

查看项目

更新于 10-21 16:17

技能介绍

Chroma 是一个面向 AI 应用的开源嵌入数据库,定位为“为构建带记忆的 LLM 应用而生的 AI 原生数据库”。项目采用 Apache 2.0 许可,版本为 1.3.3(稳定版,每周发布),GitHub 星标 24,300+。

【用途与适用场景】 适合以下情况使用:构建 RAG(检索增强生成)应用;需要本地或自托管的向量数据库;希望使用开源方案(Apache 2.0);在 notebook 中进行原型开发;对文档做语义搜索;存储带元数据的嵌入向量。 若需求为托管云服务与自动扩缩容,可考虑 Pinecone;若只需纯相似度搜索且不需要元数据,可考虑 FAISS;生产级 ML 原生数据库可考虑 Weaviate;高性能 Rust 实现可考虑 Qdrant。

【主要能力】

  • 存储嵌入向量与元数据,支持向量搜索与全文搜索,并可按元数据过滤。
  • 核心操作包括:创建/获取/删除集合(collection)、添加文档(可自动生成 ID 或使用自定义嵌入)、查询(相似度搜索,支持 where 过滤)、按 ID 或过滤条件获取文档、更新文档、删除文档。
  • 元数据过滤支持精确匹配、比较运算符($gt、$gte、$lt、$lte、$ne)、逻辑运算符($and、$or)以及 $in 包含判断。
  • 持久化存储:使用 PersistentClient 指定路径后数据自动持久化,后续以相同路径重新加载。
  • 嵌入函数:默认使用 Sentence Transformers(默认模型 all-MiniLM-L6-v2),也可使用 OpenAIEmbeddingFunction、HuggingFaceEmbeddingFunction,或通过继承 EmbeddingFunction 实现自定义嵌入函数。
  • 集成能力:提供 LangChain(langchain_chroma)与 LlamaIndex(llama_index.vector_stores.chroma)集成方式,可作为向量存储或检索器使用。
  • 服务端模式:可通过 chroma run --path ./chroma_db --port 8000 启动服务,并使用 HttpClient 连接。

【使用方式】 安装:Python 使用 pip install chromadb;JavaScript/TypeScript 使用 npm install chromadb @chroma-core/default-embed。 Python 基本用法:导入 chromadb,创建客户端 client = chromadb.Client(),创建集合 client.create_collection(name="my_collection"),通过 collection.add(documents=[...], metadatas=[...], ids=[...]) 添加文档,通过 collection.query(query_texts=[...], n_results=2) 查询并打印结果。 持久化:client = chromadb.PersistentClient(path="./chroma_db")。 服务端连接:使用 chromadb.HttpClient(host="localhost", port=8000, settings=Settings(anonymized_telemetry=False))。

【性能参考】 添加 100 个文档(含嵌入)约 1-3 秒;查询 top 10 约 50-200 毫秒(取决于集合大小);元数据过滤约 10-50 毫秒(索引合适时较快)。

【最佳实践】 使用持久化客户端避免重启丢数据;添加元数据以便过滤与追踪;批量操作;选择合适的嵌入模型平衡速度与质量;使用过滤器缩小搜索空间;使用唯一 ID 避免冲突;定期备份(复制 chroma_db 目录);监控集合规模;测试嵌入函数质量;生产环境使用服务端模式以支持多用户。

【限制与注意事项】 资料未提供 Chroma 的收费与价格信息。资料强调:不得编造结果、参数、标识符、引用或统计数据;答案应来自检索到的文本,语料不含答案时应明确说明;版本相关细节可能过时,应以所安装版本的官方文档为准;涉及花钱、占用共享 GPU 或云配额、触及个人或患者数据、或不可撤销的操作前应先询问。若检索返回不相关片段,应先检查分块、加入 BM25/混合搜索或重排序,而非直接更换生成器;若指令中的函数、参数或端点在当前安装版本中不存在,应查阅该版本文档并告知用户,不得臆造 API。

【相关技能】 llamaindex(构建 RAG 的 LLM 应用数据框架)、langchain(构建带智能体、链与 RAG 的 LLM 应用框架)、qdrant-vector-search(面向 RAG 与语义搜索的高性能向量相似度搜索引擎)。

【资源】 GitHub:https://github.com/chroma-core/chroma 文档:https://docs.trychroma.com Discord:https://discord.gg/MMeYNTmh3x 版本:1.3.3+ 许可:Apache 2.0