Atualize documentos existentes em uma coleção do DashVector usando o SDK para Python.
Se o ID de um documento a ser atualizado não existir, a operação de atualização não terá efeito.
Ao atualizar apenas alguns campos, os demais serão definidos como
Nonepor padrão.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster do DashVector
Uma chave de API
A versão mais recente do SDK do DashVector
Assinatura da API
Collection.update(
docs: Union[Doc, List[Doc], Tuple, List[Tuple]],
partition: Optional[str] = None,
async_req: False
) -> DashVectorResponse
Exemplos
Substitua
YOUR_API_KEYeYOUR_CLUSTER_ENDPOINTpelas suas credenciais reais.Crie uma coleção chamada
quickstart. Para mais informações, consulte a seção "Exemplo" em Criar uma coleção.
Todos os exemplos compartilham esta configuração de cliente:
import dashvector
from dashvector import Doc
import numpy as np
client = dashvector.Client(
api_key='YOUR_API_KEY',
endpoint='YOUR_CLUSTER_ENDPOINT'
)
collection = client.get(name='quickstart')
Atualizar um único documento
A forma mais simples de atualizar um documento é utilizando uma tupla (id, vector):
# Update by using a tuple (id, vector)
ret = collection.update(
('2', [0.1, 0.1, 0.1, 0.1])
)
Como alternativa, use um objeto Doc para ter um controle mais explícito:
# Update by using a Doc object
ret = collection.update(
Doc(
id='1',
vector=[0.1, 0.2, 0.3, 0.4]
)
)
# Verify the update succeeded
assert ret
Atualizar um documento com campos
Passe um dicionário fields para atualizar metadados juntamente com o vetor. Os campos podem ser predefinidos no esquema da coleção ou adicionados dinamicamente como campos sem esquema:
# Update vector and fields by using a Doc object
ret = collection.update(
Doc(
id='3',
vector=np.random.rand(4),
fields={
# Predefined fields (types must match the collection schema)
'name': 'zhangsan', 'weight': 70.0, 'age': 30,
# Schema-free fields (str, int, bool, or float)
'anykey1': 'str-value', 'anykey2': 1,
'anykey3': True, 'anykey4': 3.1415926
}
)
)
# Equivalent tuple format: (id, vector, fields)
ret = collection.update(
('4', np.random.rand(4), {'foo': 'bar'})
)
Atualizar vários documentos em lote
Envie uma lista de objetos Doc ou tuplas para atualizar múltiplos documentos em uma única chamada:
# Batch update by using Doc objects
ret = collection.update(
[
Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10)
]
)
# Batch update by using tuples (id, vector, fields)
ret = collection.update(
[
('15', [0.2, 0.7, 0.8, 1.3], {'age': 20}),
('16', [0.3, 0.6, 0.9, 1.2], {'age': 30}),
('17', [0.4, 0.5, 1.0, 1.1], {'age': 40})
]
)
# Verify the batch update succeeded
assert ret
Atualizar documentos de forma assíncrona
Defina async_req=True para executar a atualização sem bloqueio. Chame .get() no future retornado para obter o resultado:
# Submit an asynchronous batch update
ret_future = collection.update(
[
Doc(id=str(i+18), vector=np.random.rand(4), fields={'name': 'foo' + str(i)}) for i in range(10)
],
async_req=True
)
# Block until the async update completes
ret = ret_future.get()
Atualizar um documento com um vetor esparso
ret = collection.update(
Doc(
id='28',
vector=[0.1, 0.2, 0.3, 0.4],
sparse_vector={1: 0.4, 10000: 0.6, 222222: 0.8}
)
)
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Padrão |
Descrição |
|
|
- |
Um ou mais documentos para atualizar. |
|
|
|
Optional[str] |
None |
Nome da partição de destino. |
|
|
bool |
False |
Defina como |
-
**Observações sobre o parâmetro
docs:**Formato de tupla: Os elementos devem seguir a ordem
(id, vector)ou(id, vector, fields). Uma tupla equivale a um objeto Doc.-
Campos: Cada campo é um par chave-valor onde a chave é do tipo
stre o valor éstr,int,booloufloat.Se a chave for predefinida durante a criação da coleção, o tipo do valor deve corresponder ao tipo predefinido.
Caso a chave não seja predefinida, o valor pode ser de qualquer um dos tipos suportados. Para mais detalhes, consulte Sem esquema.
Resposta
Retorna um objeto DashVectorResponse:
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
|
|
int |
Código de status. Para mais informações, consulte Códigos de status. |
0 |
|
|
str |
Mensagem de resultado. |
success |
|
|
str |
ID exclusivo da solicitação. |
19215409-ea66-4db9-8764-26ce2eb5bb99 |