嵌入向量(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 chromadb
chroma_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