import os
from dotenv import load_dotenv
load_dotenv()
True
# print(os.environ.get("OPENAI_API_KEY"))
# 1、安装
#!pip install chromadb
import chromadb
import numpy as np
1、基本使用
# 2、创建 Chroma 客户端(临时)
chroma_client = chromadb.Client()
# 3、创建集合
# 集合用于存储嵌入、文档以及任何其他元数据。集合会为您的嵌入和文档建立索引,并支持高效的检索和筛选。您可以创建一个集合,其名称如下:
collection = chroma_client.create_collection(name="test_collection_01")
# 4、向集合中添加一些文本文档
# Chroma 将存储您的文本并自动处理嵌入和索引。您还可以自定义嵌入模型。您必须为文档提供唯一的字符串 ID。
collection.add(
documents=[
"这是一份关于葡萄的文档",
"这是一份关于土豆的文档"
],
ids=["id1", "id2"]
)
# 5、查询集合
# 您可以使用查询文本列表来查询集合,Chroma 将返回n最相似的结果。就是这么简单!
results = collection.query(
query_texts=["我想炒个菜,有哪些蔬菜?"],
n_results=2 # 返回多少条结果
)
print(results)
{'ids': [['id1', 'id2']], 'embeddings': None, 'documents': [['这是一份关于葡萄的文档', '这是一份关于土豆的文档']], 'uris': None, 'data': None, 'metadatas': [[None, None]], 'distances': [[0.8818705081939697, 0.9220271110534668]], 'included': [<IncludeEnum.distances: 'distances'>, <IncludeEnum.documents: 'documents'>, <IncludeEnum.metadatas: 'metadatas'>]}
results = collection.query(
query_texts=["什么东西能吃?"],
n_results=2 # 返回多少条结果
)
print(results)
{'ids': [['id2', 'id1']], 'embeddings': None, 'documents': [['这是一份关于土豆的文档', '这是一份关于葡萄的文档']], 'uris': None, 'data': None, 'metadatas': [[None, None]], 'distances': [[0.6555243730545044, 0.7530038356781006]], 'included': [<IncludeEnum.distances: 'distances'>, <IncludeEnum.documents: 'documents'>, <IncludeEnum.metadatas: 'metadatas'>]}
6、检查结果
问题:我想炒个菜,有哪些蔬菜?
{
“ids”: [[“id1”, “id2”]],
“embeddings”: null,
“documents”: [[“这是一份关于葡萄的文档”, “这是一份关于土豆的文档”]],
“uris”: null,
“data”: null,
“metadatas”: [[null, null]],
“distances”: [[0.8818705081939697, 0.9220271110534668]],
“included”: [“distances”, “documents”, “metadatas”]
}
2、持久客户端
您可以配置 Chroma 从本地计算机保存和加载数据库,使用持久客户端。
数据将自动保存并在启动时加载(如果存在)。
client = chromadb.PersistentClient(path="data/")
client.heartbeat() # 纳秒级链接,用于确保客户端保持连接。
client.reset() # 清空并完全重置数据库。

最低0.47元/天 解锁文章
2340

被折叠的 条评论
为什么被折叠?



