Chroma 简介
原文:Chroma 简介
一句话
Chroma 是开源的 AI 数据基础设施,提供了 RAG 应用所需的一切功能,包括 embedding 存储、向量搜索、元数据过滤和多模态检索。
什么时候翻这页
当你需要了解 Chroma 的核心功能和如何开始使用它构建 RAG 应用时;当你需要比较不同向量数据库特性时;当你需要了解 Chroma 与 LangChain、LangGraph 和 LangSmith 的集成方式时。
核心概念
- Chroma: 开源的 AI 数据基础设施,提供检索增强生成所需的一切功能
- Document Storage: 存储文档和元数据的功能
- Embeddings: 支持多种嵌入模型,包括 OpenAI、Cohere、Hugging Face、sentence-transformers 等
- Vector Search: 提供密集、稀疏和混合搜索功能,可通过相似性查询并组合多种搜索策略
- Full-Text & Regex Search: 无需 embeddings 的关键字和正则表达式搜索
- Metadata Filtering: 按元数据条件在查询时过滤结果
- Multi-Modal Retrieval: 索引和搜索图像、音频等多种模态的数据,与文本一起检索
怎么做
-
使用 Chroma SDK 开始:
- 创建自托管或云数据库
- 使用 Chroma SDK 向数据库添加数据
-
创建 Chroma Cloud 数据库:
- 访问 trychroma.com 创建可扩展、零操作的 Chroma Cloud 数据库
-
构建代理搜索:
- 构建能够迭代搜索和优化复杂查询结果的代理
-
构建代码搜索:
- 使用 AST 感知的 chunking 索引代码库,为编码代理提供支持
命令 / API 速查
- 创建 Chroma 集合:
chroma_client.create_collection(name="my_collection") - 添加数据:
collection.add(embeddings=embeddings, documents=documents, metadatas=metadatas) - 查询集合:
collection.query(query_embeddings=query_embeddings, n_results=5) - 元数据过滤:
collection.query(query_embeddings=query_embeddings, where={"metadata_field": "metadata_value"}) - 全文搜索:
collection.query(query_texts=["text query"], n_results=5)
与 Hello-Agents / LangGraph / 本博客 handbook 索引的联系
Chroma 是本博客 handbook 中使用的向量数据库,用于存储和检索 embedding。在 Hello-Agents 的记忆与检索章节中,Chroma 作为 vector store 存储文档的 embedding。在 LangGraph 应用中,Chroma 可作为 retriever 的一部分,提供相关文档检索功能。LangSmith 可以监控和评估使用 Chroma 作为 vector store 的 RAG 管道的性能。
初学者易错点
- 误以为 Chroma 只能处理文本数据,实际上它支持多模态数据(图像、音频等)
- 忽略元数据的重要性,元数据对于过滤和优化检索结果至关重要
- 混淆密集向量搜索和稀疏向量搜索的使用场景,应根据具体需求选择合适的搜索策略
- 未充分利用 Chroma 的混合搜索能力,结合密集和稀疏搜索可以获得更好的结果