嵌入向量(vector embedding)是表示任何类型数据的 A.I 原生方式,使它们非常适合与各种 A.I 驱动的工具和算法一起使用。 它们可以表示文本、图像,很快还可以表示音频和视频。 有许多创建嵌入的选项,无论是在本地使用已安装的库,还是通过调用 API。

推荐:用 NSDT设计器 快速搭建可编程3D场景。

Chroma 是一个用于构建带有嵌入向量的 AI 应用程序的数据库。 它内置了入门所需的一切,并可在你的机器上运行。 托管版本即将推出!

1、安装Chroma数据库

使用如下命令安装Chroma数据库:

pip install chromadb

注意,由于 pytorch的原因,chromadb 目前不支持 Python 3.11

2、获取Chroma Client对象

在Python中使用Chroma的Client对象访问数据库:

import chromadbchroma_client = chromadb.Client()

3、创建Chroma数据集

接下来使用Python在Chroma中创建一个集合(Collection)。

集合是存储嵌入、文档和任何其他元数据的地方。 可以创建一个具有名称的集合:

collection = chroma_client.create_collection(name="my_collection")

4、向Chroma数据集添加文档

继续添加一些文本文档到集合中,Chroma 将存储文本,并自动处理标记化、嵌入和索引:

collection.add(documents=["This is a document", "This is another document"],metadatas=[{"source": "my_source"}, {"source": "my_source"}],ids=["id1", "id2"])

如果已经自己生成了嵌入向量,则可以直接加载:

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"])

5、查询Chroma中的数据

现在可以进行查询了。可以用查询文本列表来查询集合,Chroma 会返回 n 个最相似的结果。 就这么简单!

results = collection.query(query_texts=["This is a query document"],n_results=2)

默认情况下,存储在 Chroma 中的数据是短暂的,因此很容易制作原型脚本。 使 Chroma 持久化很容易,因此可以重复使用创建的每个集合,并在以后向其中添加更多文档。 它会在启动客户端时自动加载你的数据,并在关闭时自动保存。


原文链接:Chroma向量数据库 — BimAnt