Manage tenant states & temperature

Storage resources are grouped into tiers. Each tier has different performance characteristics and costs:
| Tier | Location | Speed | Cost |
|---|---|---|---|
| Hot | RAM | Fastest access | Most expensive |
| Warm | Disk | Medium speed | Medium price |
| Cold | Cloud Storage | Slowest access | Least expensive |
The pricing difference between Hot and Cold tiers is significant. Cloud storage is several orders of magnitude cheaper than RAM.
In multi-tenant collections, you can change tenant states (Active, Inactive, Offloaded) to move data between storage tiers. This allows granular trade-offs between cost, resource availability, and readiness.
Manage vector index resource temperature
The vector index type affects its default resource type.
HNSWindex (default) - uses the vector index in RAM, a Hot resource.Flatindex - uses the vector index on disk, a Warm resource.Dynamicindex - starts as a flat index (using a Warm resource), then switches to an HNSW index (a Hot resource) at a predetermined threshold.
Tenant States Overview
Section titled “Tenant States Overview”There are three tenant states: Active, Inactive and Offloaded.
| Tenant state | CRUD & Queries | Vector Index | Inverted Index | Object Data | Time to Activate | Description |
|---|---|---|---|---|---|---|
| Active (default) | Yes | Hot/Warm | Warm | Warm | None | Tenant is available for use |
| Inactive | No | Warm | Warm | Warm | Fast | Tenant is locally stored but not available for use |
| Offloaded | No | Cold | Cold | Cold | Slow | Tenant is stored in cloud storage and not available for use |
Active
Section titled “Active”An Active tenant is available for queries and CRUD operations. Depending on the vector index type it uses either hot or warm resources.
The tenant's object data and inverted index are stored on disk, using warm resources.

Inactive
Section titled “Inactive”An Inactive tenant is not available for queries nor CRUD operations.
The tenant's object data, vector index and inverted index are stored on disk, using warm resources. This can lower Weaviate's memory requirements compared to active tenants that use hot resources.
Since the tenant is stored locally, inactive tenants can be activated quickly.

Offloaded
Section titled “Offloaded”An offloaded tenant is not available for queries or CRUD operations.
The tenant's object data, vector index and inverted index are stored on the cloud, using cold resources. Since the tenant is stored remotely, there is a delay when activating an offloaded tenant.

Activate tenant
Section titled “Activate tenant”To activate an INACTIVE tenant from disk, or to onload and activate an OFFLOADED tenant from cloud, call:
from weaviate.classes.tenants import Tenant, TenantActivityStatusmulti_collection = client.collections.use("MultiTenancyCollection")multi_collection.tenants.update(tenants=[ Tenant( name="tenantA", activity_status=TenantActivityStatus.ACTIVE )])const multiCollection = client.collections.use(collectionName)await multiCollection.tenants.update({ name: 'tenantA', activityStatus: 'ACTIVE'})String tenantName = "tenantA";
CollectionHandle<Map<String, Object>> collection =
client.collections.use(collectionName);
collection.tenants.activate(tenantName);string[] tenantName = ["tenantA"];
await collection.Tenants.Activate(tenantName);Deactivate tenant
Section titled “Deactivate tenant”To deactivate an ACTIVE tenant, or to onload an OFFLOADED tenant from cloud (without activating it), call:
from weaviate.classes.tenants import Tenant, TenantActivityStatusmulti_collection = client.collections.use("MultiTenancyCollection")multi_collection.tenants.update(tenants=[ Tenant( name="tenantA", activity_status=TenantActivityStatus.INACTIVE )])const multiCollection = client.collections.use(collectionName)await multiCollection.tenants.update({ name: 'tenantA', activityStatus: 'INACTIVE'})String tenantName = "tenantA";
CollectionHandle<Map<String, Object>> collection =
client.collections.use(collectionName);
collection.tenants.deactivate(tenantName);string[] tenantName = ["tenantA"];
await collection.Tenants.Deactivate(tenantName);Offload tenant
Section titled “Offload tenant”To offload an ACTIVE or INACTIVE tenant to cloud, call:
from weaviate.classes.tenants import Tenant, TenantActivityStatusmulti_collection = client.collections.use("MultiTenancyCollection")multi_collection.tenants.update(tenants=[ Tenant( name="tenantA", activity_status=TenantActivityStatus.OFFLOADED )])const multiCollection = client.collections.use(collectionName)await multiCollection.tenants.update({ name: 'tenantA', activityStatus: 'OFFLOADED'})String tenantName = "tenantA";
CollectionHandle<Map<String, Object>> collection =
client.collections.use(collectionName);
collection.tenants.offload(tenantName);await collection.Tenants.Offload(new[] { "tenantA" });Automatically activate tenants
Section titled “Automatically activate tenants”Enable this to automatically activate INACTIVE or OFFLOADED tenants if a search, read, update, or delete operation is performed on them.
from weaviate.classes.config import Configuremulti_collection = client.collections.create( name="CollectionWithAutoTenantActivation", multi_tenancy_config=Configure.multi_tenancy( enabled=True, auto_tenant_activation=True # Enable automatic tenant activation ))const result = await client.collections.create({ name: 'CollectionWithAutoTenantActivation', multiTenancy: weaviate.configure.multiTenancy({ enabled: true, autoTenantActivation: true })})client.collections.create("MultiTenancyCollection",
col -> col.multiTenancy(mt -> mt.autoTenantActivation(true)));await client.Collections.Create(
new CollectionCreateParams
{
Name = "MultiTenancyCollection",
MultiTenancyConfig = new MultiTenancyConfig
{
Enabled = true,
AutoTenantActivation = true,
},
}
);Questions and feedback
Section titled “Questions and feedback”Have a question or feedback? Here's how to reach us.