文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

ChromaDocumentStore

Chroma 是一个开源向量数据库,能够存储文档集合及其元数据,为文档和查询创建嵌入,并按文档元数据或内容进行过滤来搜索集合。此外,Chroma 还支持多模态嵌入函数。

Chroma 可以内存运行、作为嵌入式数据库运行,或以客户端-服务器模式运行。当内存运行时,Chroma 仍然可以在不同会话之间将内容保留在磁盘上。这使得用户能够快速搭建原型,并稍后迁移到生产环境,在那里部署客户端-服务器版本。

初始化

首先,安装 Chroma 集成,这将安装 Haystack 和 Chroma(如果它们尚未安装)。您只需要以下命令即可开始

pip install chroma-haystack

要将数据存储在 Chroma 中,请创建一个 ChromaDocumentStore 实例,并使用以下方式写入文档

from haystack_integrations.document_stores.chroma import ChromaDocumentStore
from haystack import Document

document_store = ChromaDocumentStore()
document_store.write_documents([
    Document(content="This is the first document."),
    Document(content="This is the second document.")
])
print(document_store.count_documents())

在这种情况下,由于我们没有与文档一起传递任何嵌入,Chroma 将使用其默认嵌入函数为我们创建它们。

连接选项

  1. 内存模式 (本地):Chroma 可以设置为本地文档存储,以实现快速轻量级的用法。您可以在开发或小型实验中使用此选项。设置一个本地内存实例的 ChromaDocumentStore 如下所示

    from haystack_integrations.document_stores.chroma import ChromaDocumentStore
    
    document_store = ChromaDocumentStore()
    
  2. 持久存储:如果您需要在会话之间保留文档,Chroma 支持通过指定一个路径来存储磁盘上的数据来实现持久存储

    from haystack_integrations.document_stores.chroma import ChromaDocumentStore
    
    document_store = ChromaDocumentStore(persist_path="your_directory_path")
    
  3. 远程连接:您可以通过 HTTP 连接到远程 Chroma 数据库。这适用于分布式设置,其中多个客户端可能与同一个远程 Chroma 实例交互。

    请注意,此选项与内存或持久存储模式不兼容。

    首先,启动一个 Chroma 服务器

    chroma run --path /db_path
    

    或使用 docker

    docker run -p 8000:8000 chromadb/chroma
    

    然后,使用以下命令初始化文档存储hostport参数

    from haystack_integrations.document_stores.chroma import ChromaDocumentStore
    
    document_store = ChromaDocumentStore(host="localhost", port="8000")
    

支持的 Retrievers

Haystack Chroma 集成提供了三个 Retriever 组件。它们都依赖于 Chroma 的query API,但它们有不同的输入和输出,以便您可以选择最适合您管道的组件。

  • ChromaQueryTextRetriever:此 Retriever 接受纯文本查询字符串作为输入,并返回匹配文档的列表。Chroma 将使用其默认嵌入函数为查询创建嵌入。
  • ChromaEmbeddingRetriever:此 Retriever 接受单个查询的嵌入作为输入,并返回匹配文档的列表。在将查询传递给此组件之前,需要对其进行嵌入。例如,您可以使用embedder组件。

其他参考资料

🧑‍🍳 食谱:使用 Chroma 进行 RAG 和索引