This is a summary of Pinecone limitations. For many of these, there is a workaround or we're working on increasing the limits.


Max vector dimensionality is 20,000.

Max vectors per upsert request is 1,000.

Vectors may not be visible to queries immediately after upserting. You can check if the vectors were indexed by looking at the total with describe_index_stats(), although this method may not work if the index has multiple replicas. The database is eventually consistent.


Max value for top_k, the number of results to return, is 10,000. Max value for top_k for queries with include_metadata=True or include_data=True is 1,000.

Max vectors per query request (batch) is 100.

Fetch and Delete

Max vectors per fetch or delete request is 1,000.


Namespaces are limited to 100 per index. If you want to create more than 100 partitions, we recommend you use metadata filtering instead.

Shards (pods)

About p1 pods

We use p1 pods for normal indexes. These store the whole runtime index in memory.

Each p1 pod can store up to 1 GB of data.

As a general guideline, add one p1 pod to your index for every additional 1 GB of data.

About s1 pods

We use s1 pods for hybrid indexes. Hybrid indexes store data partially in memory and partially on disk.

Each s1 pod can store up to 5 GB of data.

The s1 pods are priced differently, and they require a Standard account. See pricing for more details.

As a general guideline, add one s1 pod to your index for every additional 5 GB of data.


Max metadata size per vector is 5 KB.

Null metadata values are not supported. Instead of setting a key to hold a null value, we recommend you remove that key from the metadata payload.


Indexes of users on the Free plan are deleted after 30 days of inactivity. To prevent this, send any API request to Pinecone or log into the Pinecone Console. This will count as activity.