- Update by ID: Update a single record’s metadata (add or change fields) or vector values.
- Update by metadata: Update metadata (add or change fields) across multiple records using a metadata filter. Vector values cannot be updated.
Update by ID
To update the vector and/or metadata of a single record, use theupdate operation with the following parameters:
namespace: The namespace containing the record to update. To use the default namespace, set the namespace to"__default__".id: The ID of the record to update.- One or both of the following:
- Updated values for the vector. Specify one of the following:
values: For dense vectors. Must have the same length as the existing vector.sparse_values: For sparse vectors.
setMetadata: The metadata to add or change. When updating metadata, only the specified metadata fields are modified, and if a specified metadata field does not exist, it is added.
- Updated values for the vector. Specify one of the following:
example-namespace namespace:
genre metadata value are changed, but the type metadata value is unchanged:
Update by metadata
To add or change metadata across multiple records in a namespace, use theupdate operation with the following parameters:
-
namespace: The namespace containing the records to update. To use the default namespace, set this to"__default__". -
filter: A metadata filter expression to match the records to update. -
setMetadata: The metadata to add or change. When updating metadata, only the specified metadata fields are modified. If a specified metadata field does not exist, it is added. -
dry_run: Optional. Iftrue, the number of records that match the filter expression is returned, but the records are not updated.Each request updates a maximum of 100,000 records. Use"dry_run": trueto check if you need to run the request multiple times. See the example below for details.
author metadata field:
Handling large updates
Each request updates a maximum of 100,000 records. For larger datasets, usedry_run to check the count and repeat the request as needed:
-
To check how many records match the filter expression, send a request with
dry_runset totrue:The response contains the number of records that match the filter expression:curlSince this number exceeds the 100,000 record limit, you’ll need to run the update request multiple times. -
Initiate the first update by sending the request without the
dry_runparameter:Again, the response contains the total number of records that match the filter expression, but only 100,000 will be updated:curl -
Pinecone is eventually consistent, so there can be a slight delay before your update request is processed. Repeat the
dry_runrequest until the number of matching records shows that the first 100,000 records have been updated:curl -
Once the first 100,000 records have been updated, update the remaining records:
curl
-
Repeat the
dry_runrequest until the number of matching records shows that the remaining records have been updated:curlOnce the request has completed, all matching records include the author name as metadata:
Limitations
- Each request updates a maximum of 100,000 records. Use
"dry_run": trueto check if you need to run the request multiple times. See the example above for details. - You can add or change metadata across multiple records, but you cannot remove metadata fields.