How it works


Understand the benefits
Understand the benefits
- Tenant isolation: In the serverless architecture, each namespace is stored separately, so using namespaces provides physical isolation of data between tenants/customers.
- No noisy neighbors: Reads and writes always target a single namespace, so the behavior of one tenant/customer does not affect other tenants/customers.
- No maintenance effort: Serverless indexes scale automatically based on usage; you don’t configure or manage any compute or storage resources.
- Cost efficiency: With serverless indexes, you pay only for the amount of data stored and operations performed. For queries in particular, the cost is partly based on the total number of records that must be scanned, so using namespaces can significantly reduce query costs.
- Simple tenant offboarding: To offboard a tenant/customer, you just delete the relevant namespace. This is a lightweight and almost instant operation.
1. Create a serverless index
Based on a breakthrough architecture, serverless indexes scale automatically based on usage, and you pay only for the amount of data stored and operations performed. Combined with the isolation of tenant data using namespaces (next step), serverless indexes are ideal for multitenant use cases. To create a serverless index, use thespec
parameter to define the cloud and region where the index should be deployed. For Python, you also need to import the ServerlessSpec
class.
2. Isolate tenant data
In a multitenant solution, you need to isolate data between tenants. To achieve this in Pinecone, use one namespace per tenant. In the serverless architecture, each namespace is stored separately, so this approach ensures physical isolation of each tenant’s data. To create a namespace for a tenant, specify thenamespace
parameter when first upserting the tenant’s records. For example, the following code upserts records for tenant1
and tenant2
into the multitenant-app
index:
namespace
. For example, the following code updates the dense vector value of record A
in tenant1
:
3. Query tenant data
In a multitenant solution, you need to ensure that the queries of one tenant do not affect the experience of other tenants/customers. To achieve this in Pinecone, target each tenant’s queries at the namespace for the tenant. For example, the following code queries onlytenant2
for the 3 vectors that are most similar to an example query vector:
4. Offboard a tenant
In a multitenant solution, you also need it to be quick and easy to offboard a tenant and delete all of its records. To achieve this in Pinecone, you just delete the namespace for the specific tenant. For example, the following code deletes the namespace and all records fortenant1
: