Minimum usage
The Standard and Enterprise pricing plans include a monthly minimum usage committment:| Plan | Minimum usage |
|---|---|
| Starter | $0/month |
| Standard | $50/month |
| Enterprise | $500/month |
Usage below monthly minimum
Usage below monthly minimum
- You are on the Standard plan.
- Your usage for the month of August amounts to $20.
- Your usage is below the $50 monthly minimum, so your total for the month is $50.
Usage exceeds monthly minimum
Usage exceeds monthly minimum
- You are on the Standard plan.
- Your usage for the month of August amounts to $100.
- Your usage exceeds the $50 monthly minimum, so your total for the month is $100.
Discounts
Pinecone offers up to an 18% discount for customers who enroll in an annual plan with an upfront payment. Eligibility requires a minimum annual commitment of $8,000. Throughout the contract term, the discount applies to List Price for all Pinecone services, excluding Storage and Support. Any usage that exceeds the prepaid credits will be billed at full List Price and will not qualify for the contractual discount. Customers on the Standard and Enterprise pay-as-you-go plans may upgrade directly by naviating in the Pinecone console to Settings > Billing > Plans.The self-serve annual plan is not available through cloud marketplace billing. To purchase an annual plan through a cloud marketplace, contact ar@pinecone.io.
Serverless indexes
With serverless indexes, you pay for the amount of data stored and operations performed, based on three usage metrics: read units, write units, and storage. For the latest serverless pricing rates, see Pricing.Read units
Read units (RUs) measure the compute, I/O, and network resources consumed by the following read requests:Indexes built on dedicated read nodes are not subject to read unit limits for query, fetch, and list operations. For sizing and capacity planning guidance, see the Dedicated Read Nodes guide.
Query
The cost of a query scales linearly with the size of the targeted namespace. Specifically, a query uses 1 RU for every 1 GB of namespace size, with a minimum of 0.25 RUs per query.| Namespace size | Read units per query |
|---|---|
| < 0.25 GB | 0.25 RUs (minimum) |
| 1 GB | 1 RU |
| 10 GB | 10 RUs |
| 50 GB | 50 RUs |
| 100 GB | 100 RUs |
Parameters that affect the size of the query response, such as
top_k, include_metadata, and include_values, are not relevant for query cost; only the size of the namespace determines the number of RUs used.Fetch
A fetch request uses 1 RU for every 10 records fetched, for example:| Fetched records | RUs |
|---|---|
| 10 | 1 |
| 50 | 5 |
| 107 | 11 |
Fetching records by metadata uses the same cost model as fetching by ID: 1 RU for every 10 records fetched.
List
List has a fixed cost of 1 RU per call, with up to 100 records per call.Write units
Write units (WUs) measure the storage and compute resources used by the following write requests:Upsert
An upsert request uses 1 WU for each 1 KB of the request, with a minimum of 5 WUs per request. When an upsert modifies an existing record, the request uses 1 WU for each 1 KB of the existing record as well. For example, the following table shows the WUs used by upsert requests at different batch sizes and record sizes, assuming all records are new:| Records per batch | Dimension | Avg. metadata size | Avg. record size | WUs |
|---|---|---|---|---|
| 1 | 768 | 100 bytes | 3.2 KB | 5 |
| 2 | 768 | 100 bytes | 3.2 KB | 7 |
| 10 | 1024 | 15,000 bytes | 19.10 KB | 191 |
| 100 | 768 | 500 bytes | 3.57 KB | 357 |
| 1000 | 1536 | 1000 bytes | 7.14 KB | 7140 |
Update
An update request uses 1 WU for each 1 KB of the new and existing record, with a minimum of 5 WUs per request. For example, the following table shows the WUs used by an update at different record sizes:| New record size | Previous record size | WUs |
|---|---|---|
| 6.24 KB | 6.50 KB | 13 |
| 19.10 KB | 15 KB | 25 |
| 3.57 KB | 5 KB | 9 |
| 7.14 KB | 10 KB | 18 |
| 3.17 KB | 3.17 KB | 7 |
Updating records by metadata uses the same cost model as updating by ID: 1 WU for each 1 KB of the new and existing record.
Delete
A delete request uses 1 WU for each 1 KB of records deleted, with a minimum of 5 WUs per request. For example, the following table shows the WUs used by delete requests at different batch sizes and record sizes:| Records per batch | Dimension | Avg. metadata size | Avg. record size | WUs |
|---|---|---|---|---|
| 1 | 768 | 100 bytes | 3.2 KB | 5 |
| 2 | 768 | 100 bytes | 3.2 KB | 7 |
| 10 | 1024 | 15,000 bytes | 19.10 KB | 191 |
| 100 | 768 | 500 bytes | 3.57 KB | 357 |
| 1000 | 1536 | 1000 bytes | 7.14 KB | 7140 |
deleteAll uses 5 WUs.
Deleting records by metadata uses the same cost model as deleting by ID: 1 WU for each 1 KB of records deleted.
Storage
Storage costs are based on the size of an index on a per-gigabyte (GB) monthly rate. The size of an index is defined as the total size of its records across all namespaces. For the latest storage pricing rates, see Pricing. A record can include a dense vector, a sparse vector, or both. Use the formula for your index type to calculate total size:- Dense index
- Sparse index
- Hybrid index
A dense index contains records with one dense vector each.Calculate dense index size (assuming no sparse vectors)Where:
Dense index records can also contain sparse vectors (when the index metric is set to
dotproduct), which can be useful for hybrid search. To learn how to calculate the size of a hybrid index, see Hybrid index.ID sizeandMetadata sizeare measured in bytes, averaged across all records.- Each
Dense vector dimensionuses 4 bytes.
| Records | Dense vector dimensions | Avg metadata size | Index size |
|---|---|---|---|
| 500,000 | 768 | 500 bytes | 1.79 GB |
| 1,000,000 | 1536 | 1,000 bytes | 7.15 GB |
| 5,000,000 | 1024 | 15,000 bytes | 95.5 GB |
| 10,000,000 | 1536 | 1,000 bytes | 71.5 GB |
Example: 500,000 records × (8-byte ID + (768 dense vector dimensions × 4 bytes) + 500 bytes of metadata) = 1.79 GB
Imports
Importing from object storage is the most efficient and cost-effective method to load large numbers of records into an index. The cost of an import is based on the size of the records read, whether the records were imported successfully or not. If the import operation fails (e.g., after encountering a vector of the wrong dimension in an import withon_error="abort"), you will still be charged for the records read. However, if the import fails because of an internal system error, you will not incur charges. In this case, the import will return the error message "We were unable to process your request. If the problem persists, please contact us at https://support.pinecone.io".
For the latest import pricing rates, see Pricing.