更新对象
Weaviate 允许部分或完全更新对象。
其他信息
- 部分更新使用
PATCH请求到/v1/objectsREST API 端点 在底层。 - 完全更新使用
PUT请求到/v1/objectsREST API 端点 在底层。 - 包含
vector属性的更新将重新计算向量嵌入(除非所有更新的text属性都 跳过)。 - 要更新对象,您必须提供集合名称、id 和要更新的属性。
- 对于 多租户 集合,您还需要指定租户名称。有关详细信息,请参阅 管理数据:多租户操作。
对象 CRUD 操作中的集合(类)名称
集合充当命名空间,因此两个不同的集合之间可能存在重复的 ID。
在 Weaviate v1.14 之前,您可以无需指定集合名称即可操作对象。此方法已被弃用。它将在 Weaviate v2.0.0 中删除。
从 v1.20 开始,您可以拥有 多租户 数据集。当 multi-tenancy 启用时,需要租户名称。
始终包含集合名称,并在启用时包含租户名称。
更新对象属性
此操作仅替换指定属性的整个值,而保留未指定的属性。提供集合名称、对象 id 和要更新的属性。
如果您更新先前向量化属性的值,Weaviate 会自动重新向量化对象。 这也会重新索引更新后的对象。
但是,如果您向集合定义添加新属性,Weaviate 仅向量化新对象。 当定义新属性时,Weaviate 不会重新向量化和重新索引现有对象,而仅在更新现有属性时才会重新向量化和重新索引。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
uuid = "..." # replace with the id of the object you want to update
jeopardy = client.collections.use("JeopardyQuestion")
jeopardy.data.update(
uuid=uuid,
properties={
"points": 100,
}
)
更新对象向量
对象向量也可以与属性类似地更新。 对于 命名向量,以类似于 对象创建 的方式提供数据作为字典/映射。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
jeopardy = client.collections.use("JeopardyQuestion")
jeopardy.data.update(
uuid=uuid,
properties={
"points": 100,
},
vector=[0.12345] * 1536
)
替换整个对象
可以通过提供集合名称、id 和新对象来替换整个对象。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
jeopardy = client.collections.use("JeopardyQuestion")
jeopardy.data.replace(
uuid=uuid,
properties={
"answer": "Replaced",
# The other properties will be deleted
},
)
删除属性
删除或更新集合定义中的属性 尚未支持。
在对象级别,您可以将对象替换为已删除这些属性或将文本属性设置为 "" 的副本。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
from typing import List
from weaviate import WeaviateClient
def del_props(client: WeaviateClient, uuid_to_update: str, collection_name: str, prop_names: List[str]) -> None:
collection = client.collections.use(collection_name)
# fetch the object to update
object_data = collection.query.fetch_object_by_id(uuid_to_update)
properties_to_update = object_data.properties
# remove unwanted properties
for prop_name in prop_names:
if prop_name in properties_to_update:
del properties_to_update[prop_name]
# replace the properties
collection.data.replace(
uuid=uuid_to_update,
properties=properties_to_update
)
uuid = "..." # replace with the id of the object you want to delete properties from
del_props(client, uuid, "JeopardyQuestion", ["answer"])
相关页面
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。
