跳至主要内容
前往文档
⌘U
Weaviate 数据库

使用 Weaviate 的 APIs 和工具开发 AI 应用

部署

部署、配置和维护 Weaviate 数据库

Weaviate Agents

使用 Weaviate 构建和部署智能代理

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

集成
贡献者指南
活动 & 工作坊
Weaviate Academy

需要帮助?

Weaviate Logo询问 AI 助手⌘K
社区论坛

删除对象

Weaviate 允许通过 ID 或一组条件删除对象。

其他信息
  • 要删除对象,您必须提供集合名称以及识别标准(例如对象 ID 或过滤器)。
  • 对于 多租户 集合,在删除对象时还需要指定租户名称。有关如何操作,请参阅 管理数据:多租户操作
对象 CRUD 操作中的集合(类)名称

集合充当命名空间,因此两个不同的集合之间可能存在重复的 ID。


在 Weaviate v1.14 之前,您可以无需指定集合名称即可操作对象。此方法已被弃用。它将在 Weaviate v2.0.0 中删除。

v1.20 开始,您可以拥有 多租户 数据集。当 multi-tenancy 启用时,需要租户名称。

始终包含集合名称,并在启用时包含租户名称。

按 ID 删除对象

要按 ID 删除,请指定集合名称和对象 ID。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
uuid_to_delete = "..."  # replace with the id of the object you want to delete

collection = client.collections.use("EphemeralObject")
collection.data.delete_by_id(
uuid_to_delete
)

删除多个对象

要删除与一组条件匹配的对象,请指定集合和 where 过滤器

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Filter

collection = client.collections.use("EphemeralObject")
collection.data.delete_many(
where=Filter.by_property("name").like("EphemeralObject*")
)

其他信息

  • 单个查询可以删除的对象数量有一个可配置的 最大限制 (QUERY_MAXIMUM_RESULTS)(默认值为 10,000)。要删除超过限制的对象,请重新运行查询。

ContainsAny / ContainsAll / ContainsNone

使用 ContainsAny / ContainsAll / ContainsNone 过滤器通过一组条件删除对象。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Filter

collection = client.collections.use("EphemeralObject")
collection.data.delete_many(
where=Filter.by_property("name").contains_any(["europe", "asia"])
)
其他信息

此功能是在 Weaviate v1.21 中添加的。

按 ID 删除多个对象

要通过其 ID 值删除多个对象,请使用带有 id 为基础标准的过滤器(例如 ContainsAny)。

限制

使用单个查询可以删除的对象数量有一个上限 (QUERY_MAXIMUM_RESULTS)。这可以防止意外的内存激增和容易出现客户端超时或网络中断的长时间运行的请求。

对象将按照 UUID 的顺序删除,就像它们将被提取的顺序一样。要删除超过限制的对象,请多次运行相同的查询,直到不再匹配任何对象为止。

默认的 QUERY_MAXIMUM_RESULTS 值为 10,000。这可能是可配置的,例如在 环境变量 中。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Filter

collection = client.collections.use("EphemeralObject")

response = collection.query.fetch_objects(limit=3) # Fetch 3 object IDs
ids = [o.uuid for o in response.objects] # These can be lists of strings, or `UUID` objects

collection.data.delete_many(
where=Filter.by_id().contains_any(ids) # Delete the 3 objects
)

删除所有对象

对象必须属于 Weaviate 中的一个集合。因此,删除集合 将删除其中的所有对象。

删除具有生存时间 (TTL) 的对象

您可以使用生存时间 (TTL) 设置在集合级别配置在指定时间段后自动删除对象。请阅读如何 设置 它或了解更多 关于它 的信息。

可选参数

  • 您可以使用 dryRun 来检查将删除多少对象,而无需实际执行删除操作。
  • output 设置为 'verbose' 以查看更多详细信息(ID 和删除状态),了解每次删除操作。
py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Filter

collection = client.collections.use("EphemeralObject")
result = collection.data.delete_many(
where=Filter.by_property("name").like("EphemeralObject*"),
dry_run=True,
verbose=True
)

print(result)
示例响应

它应该产生如下响应

{
"dryRun": true,
"match": {
"class": "EphemeralObject",
"where": {
"operands": null,
"operator": "Like",
"path": [
"name"
],
"valueText": "EphemeralObject*"
}
},
"output": "verbose",
"results": {
"failed": 0,
"limit": 10000,
"matches": 5,
"objects": [
{
"id": "208cf21f-f824-40f1-95cb-f923bc840ca6",
"status": "DRYRUN"
},
{
"id": "8b2dddd4-2dc7-422c-885d-f9d5ff4e80c8",
"status": "DRYRUN"
},
{
"id": "49b3b2b4-3a77-48cd-8e39-27e83c811fcc",
"status": "DRYRUN"
},
{
"id": "847b31d0-dab4-4c1c-8cd3-af07c9d3dc2c",
"status": "DRYRUN"
},
{
"id": "147d9cea-5f9c-40c1-884a-f99bc8e9bf06",
"status": "DRYRUN"
}
],
"successful": 0
}
}

问题和反馈

如果您有任何问题或反馈,请在 用户论坛 中告诉我们。