Chroma数据库

Chroma数据库概述

该数据库对环境要求较高,推荐python3.10版本进行安装,由于使用了一些新技术,该数据库的部署可能会出现一些版本兼容性问题

特点:开源,本地部署,基于sqlite,因此无需配置数据库连接信息

功能:

  • 存储embedding和metadata数据
  • embedding文档和query
  • 对embedding的数据进行搜索

使用

1. 创建client
import chromadb
client = chromadb.Client()
client = chromadb.PersistentClient(path="/path/to/save/to")

创建client的方式有两种:

  1. 从内存中启动:数据存储在内存中,除非手动保存否则在程序结束时会丢失数据
  2. 从磁盘中启动:数据存储在磁盘中,会自动将数据存储到指定的路径中
2. collection的相关操作

其中,embedding为可选操作

# 创建collection
collection = client.create_collection(name="my_collection", embedding_function=emb_fn)
# 获取collection
collection = client.get_collection(name="my_collection", embedding_function=emb_fn)
# 删除collection
collection = client.delete_collection(name="my_collection")

collection的其他操作

# 返回collection的前10项
collection.peek() 
# 返回collection中的个数
collection.count()
# 重命名collection
collection.modify(name="new_name")
4 .向collection中添加文档

当你添加文档后,Chroma会自动对文档进行 tokenization, embedding, and indexing

collection.add(
    documents=["doc1", "doc2"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

其中metadatas为可选项

当然,你可能不需要Chroma帮你去embedding,你需要使用openai api进行embedding,那么Chroma也提供直接加载embedding的方法:

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["doc1", "doc2"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)
5. 对collection进行查询

你可以使用一个文本list对collection进行查询,并且你可以控制返回的结果:

当使用query_texts时,Chroma会使用embedding_function对query_texts进行嵌入,然后使用嵌入后的数据进行查询

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

通过query_embeddings进行查询:
还可以对搜索的结果进行筛选:

  • include表示要返回的数据,可以是embedding、doc、matadata等
  • where表示对元数据进行筛选
  • where_document表示对文档内容进行筛选
collection.query(
    query_embeddings=[[11.1, 12.1, 13.1],[1.1, 2.3, 3.2], ...],
    n_results=10,
    include=["documents"],
    where={"metadata_field": "is_equal_to_this"},
    where_document={"$contains":"search_string"}
)
6. 对collection进行更新

collection中的任何内容都可以通过update方法进行更新

collection.update(
    ids=["id1", "id2", "id3", ...],
    embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2], ...],
    metadatas=[{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}, ...],
    documents=["doc1", "doc2", "doc3", ...],
)

Chroma还支持upsert操作,可以更新现有的项目或者添加不存在的项目

collection.upsert(
    ids=["id1", "id2", "id3", ...],
    embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2], ...],
    metadatas=[{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}, ...],
    documents=["doc1", "doc2", "doc3", ...],
)
7. 对collection进行删除

通过id进行删除:

collection.delete(
    ids=["id1", "id2", "id3",...],
    where={"chapter": "20"}
)
8. 实用的方法
# 重置整个数据库
client.reset()

# 判断数据库服务是否启动
client.heartbeat()
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据提供的引用内容,我们可以得知Chroma设备中的数据查询模块可以查看所有测试完成的数据文件,并且可以自定义格式导出;数据分析功能可以以曲线图的形式动态描述电池测试各参数之间的相互关系,并且可以自定义导入报表模板生成分析报表,可以自行设定X/Y轴的显示参数。 因此,Chroma数据库的增删改查操作可以通过数据查询模块来实现。具体方法如下: - 增加数据:可以通过在数据查询模块中导入新的数据文件来实现。首先,准备好要导入的数据文件,然后打开数据查询模块,选择导入数据的选项,将文件导入系统中。 - 删除数据:可以在数据查询模块中选择要删除的数据文件,并进行删除操作。打开数据查询模块,浏览已有的数据文件列表,选择要删除的文件,然后选择删除选项,确认删除操作。 - 修改数据:可以通过在数据查询模块中选择要修改的数据文件,并进行修改操作。打开数据查询模块,浏览已有的数据文件列表,选择要修改的文件,然后选择修改选项,对文件进行必要的修改,保存修改后的文件。 - 查询数据:可以在数据查询模块中使用自定义的查询参数来查询特定的数据文件。打开数据查询模块,选择查询选项,设定需要查询的参数,执行查询操作,系统将返回符合条件的数据文件列表。 总结起来,Chroma数据库的增删改查操作可以通过数据查询模块来实现,具体方法包括导入新数据、删除现有数据、修改数据和查询数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [电池充放电自动测试系统介绍](https://blog.csdn.net/sdasczdf/article/details/126232678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Chroma 耐压测试 19053](https://download.csdn.net/download/liulixin126/80055270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值