跳到主要内容

upsert - 更新或插入数据

upsert() 用于插入新记录或更新现有记录。如果存在具有给定 ID 的记录,则将对其进行更新;否则,将插入新记录。

信息

仅支持在使用 Client 连接时,才能使用该接口。关于 Client 的详细介绍,参见 Client

前提条件

  • 您已经安装了 pyseekdb,有关安装 pyseekdb 的详细信息,参见 快速开始

  • 您已经连接到数据库。有关连接的详细操作参见 Client

  • 如果您使用的是客户端模式的 seekdb 或者 OceanBase 数据库,请确保连接的用户已拥有待操作的表的 INSERTUPDATE 权限,查看当前用户权限的相关操作请参见 查看用户权限。如果不具备该权限,请联系管理员为您授权,用户授权的相关操作请参见 直接授予权限

请求参数

Upsert(
ids=ids,
embeddings=embeddings,
documents=documents,
metadatas=metadatas
)
参数取值类型是否必选描述取值示例
idsstring 或者 List[str]必选需要新增或者修改的 ID。可以是单个,也可以是数组。item1
embeddingsList[float] 或者 List[List[float]]可选vectors;如果提供,直接使用(忽略 embedding_function),如果不提供,可以提供 documents 来自动生成 vectors。[0.1, 0.2, 0.3]
documentsstring 或者 List[str]可选documents。如果没有提供 vectorsdocuments 将使用 collection 的 embedding_function 转换为 vectors。"Document text"
metadatasdict 或者 List[dict]可选metadata。{"category": "AI"}

请求示例

import pyseekdb

# Create a client
client = pyseekdb.Client()

collection = client.get_collection("my_collection")
collection1 = client.get_collection("my_collection1")

# Upsert single item (insert or update)
collection.upsert(
ids="item1",
embeddings=[0.1, 0.2, 0.3],
documents="Document text",
metadatas={"category": "AI", "score": 95}
)

# Upsert multiple items
collection.upsert(
ids=["item1", "item2", "item3"],
embeddings=[
[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6],
[0.7, 0.8, 0.9]
],
documents=["Doc 1", "Doc 2", "Doc 3"],
metadatas=[
{"category": "AI"},
{"category": "ML"},
{"category": "DL"}
]
)

# Upsert with documents only - embeddings auto-generated by embedding_function
# Requires: collection must have embedding_function set
collection1.upsert(
ids=["item1", "item2"],
documents=["Document 1", "Document 2"],
metadatas=[{"category": "AI"}, {"category": "ML"}]
)

返回参数

相关操作