New projects should use the Documents API. To move an existing index, see Move to the Documents API.
Update by ID
To update the vector and/or metadata of a single record, use the Update a record 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 doesn’t exist, it’s 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 doesn’t exist, it is added. -
dry_run: Optional. Iftrue, the number of records that match the filter expression is returned, but the records aren’t 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, per Update limits. Use
"dry_run": trueto check if you need to run the request multiple times. See the example above for details. - Large update-by-metadata requests can be slow to process. A request that matches many records takes longer to complete and to be reflected, so size the work with
dry_runand batch it. See Handling large updates. - You can add or change metadata across multiple records, but you can’t remove metadata fields.