Chroma是一个开源的AI应用数据库,专门设计用于存储和检索向量嵌入(embeddings)。它是一个嵌入数据库(也称为向量数据库),可以通过最近邻搜索而不是传统数据库的子字符串搜索来查找数据。
GitHub地址: https://github.com/chroma-core/chroma
Chroma集成了多种功能,包括嵌入、向量搜索、文档存储、全文搜索、元数据过滤和多模态检索,所有功能都集成在一个平台中。
默认情况下,Chroma使用Sentence Transformers进行嵌入,但也可以使用OpenAI embeddings、Cohere(多语言)等其他嵌入模型。
支持多种部署模式,包括内存模式、文件存储模式和服务器模式。
支持不同的存储后端,如DuckDB用于本地使用,ClickHouse用于扩展大型应用程序。
在RAG系统中,首先将文档嵌入并存储在ChromaDB集合中,然后通过ChromaDB运行查询来找到语义相关的内容。
在语义搜索中,ChromaDB能够基于向量嵌入找到彼此相似的数据点,这对于通过分析内容或含义来识别可比较的文档、图像或其他数据类型非常有用。
通过向量空间中的距离计算,快速找到与查询最相似的内容。
pip install chromadb
import chromadb
client = chromadb.Client()
collection = client.create_collection("my_collection")
collection.add(
documents=["This is document 1", "This is document 2"],
metadatas=[{"source": "doc1"}, {"source": "doc2"}],
ids=["id1", "id2"]
)
results = collection.query(
query_texts=["search query"],
n_results=2
)
Chroma已经与LangChain深度集成,可以作为向量存储组件使用。
Chroma已经与OpenAI的嵌入函数集成,支持任意元数据存储和过滤。
Chroma是现代AI应用开发中不可或缺的基础设施组件,特别适合需要语义搜索、RAG系统和向量相似性匹配的应用场景。其简洁的API、强大的功能和良好的生态集成使其成为开发者的首选向量数据库解决方案。