当前位置:   article > 正文

3.1 Chroma-使用指南-python_chroma.get()

chroma.get()

初始化一个持久的 Chroma 客户端

import chromadb
  • 1

您可以配置 Chroma 来保存和加载本地机器上的数据。数据将自动持久化,并在启动时加载(如果存在)。

client = chromadb.PersistentClient(path="/path/to/save/to")
  • 1

path 是 Chroma 在磁盘上存储其数据库文件的位置,并在启动时加载这些文件。

客户端对象具有一些有用的便利方法。

client.heartbeat() # returns a nanosecond heartbeat. Useful for making sure the client remains connected.
client.reset() # Empties and completely resets the database. ⚠️ This is destructive and not reversible.
  • 1
  • 2

以client/server模式运行 Chroma

Chroma 还可以配置为client/server模式运行。在此模式下,Chroma 客户端连接到在单独进程中运行的 Chroma 服务器。

要启动 Chroma 服务器,请运行以下命令:

chroma run --path /db_path
  • 1

然后使用 Chroma HTTP 客户端连接到服务器:

import chromadb
chroma_client = chromadb.HttpClient(host='localhost', port=8000)
  • 1
  • 2

就是这样!只需进行这个更改,Chroma 的 API 将以client-server模式运行。

使用 python http-only客户端

如果您正在以client-server模式运行 Chroma,您可能不需要完整的 Chroma 库。相反,您可以使用仅包含客户端功能的轻量级库。在这种情况下,您可以安装 chromadb-client 包。这个包是一个轻量级的针对服务器的 HTTP 客户端,具有很小的依赖资源占用。

pip install chromadb-client
  • 1
import chromadb
# Example setup of the client to connect to your chroma server
client = chromadb.HttpClient(host='localhost', port=8000)
  • 1
  • 2
  • 3

请注意,chromadb-client包是完整Chroma库的子集,不包括所有依赖项。如果您想使用完整的Chroma库,可以安装chromadb包。最重要的是,没有默认的嵌入函数。如果您在没有嵌入的情况下添加(add())文档,必须手动指定一个嵌入函数并安装其所需的依赖项。

使用集合

Chroma允许您使用集合原语管理嵌入集合。

创建、检查和删除集合。

Chroma 在 URL 中使用集合名称,因此在为其命名时有一些限制:

  • 名称的长度必须介于3个到63个字符之间;
  • 名称必须以小写字母或数字开头和结尾,中间可以包含点、破折号和下划线;
  • 名称不能包含两个连续的点;
  • 名称不能是有效的 IP 地址。

Chroma 集合通过名称和可选的嵌入函数创建。如果您提供了嵌入函数,则需要在每次访问集合时都提供它。

collection = client.create_collection(name="my_collection", embedding_function=emb_fn)
collection = client.get_collection(name="my_collection", embedding_function=emb_fn)
  • 1
  • 2

如果您已经自己生成了嵌入(embeddings),您可以直接将它们加载进去:

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["This is a document", "This is another document"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:
如果您之后想要获取集合(get_collection),您必须使用创建集合时提供的嵌入函数进行获取。

嵌入函数接受文本作为输入,并执行分词和嵌入操作。如果未提供嵌入函数,Chroma 将使用默认的 sentence transfomer

您可以了解有关

推荐阅读
相关标签