Skip to main content

Manage tenant states & temperature

Overview

Storage Tiers

Storage resources are grouped into tiers. Each tier has different performance characteristics and costs:

TierLocationSpeedCost
HotRAMFastest accessMost expensive
WarmDiskMedium speedMedium price
ColdCloud StorageSlowest accessLeast 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.

  • HNSW index (default) - uses the vector index in RAM, a Hot resource.
  • Flat index - uses the vector index on disk, a Warm resource.
  • Dynamic index - 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

There are three tenant states: Active, Inactive and Offloaded.

Tenant stateCRUD & QueriesVector IndexInverted IndexObject DataTime to ActivateDescription
Active (default)YesHot/WarmWarmWarmNoneTenant is available for use
InactiveNoWarmWarmWarmFastTenant is locally stored but not available for use
OffloadedNoColdColdColdSlowTenant is stored in cloud storage and not available for use

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.

Active Tenant resources

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.

Inactive Tenant resources

Offloaded

Offloading: AWS S3 only

As of Weaviate v1.26.0, tenants can only be offloaded to cold storage in AWS S3. Additional storage options may be added in future releases.

To offload a tenant, use the offload-s3 module.

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.

Offloaded Tenant resources

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, TenantActivityStatus

multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.ACTIVE
)
])

Deactivate tenant

Added in v1.21.0

To deactivate an ACTIVE tenant, or to onload an OFFLOADED tenant from cloud (without activating it), call:

from weaviate.classes.tenants import Tenant, TenantActivityStatus

multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.INACTIVE
)
])

Offload tenant

Added in v1.26.0

To offload an ACTIVE or INACTIVE tenant to cloud, call:

from weaviate.classes.tenants import Tenant, TenantActivityStatus

multi_collection = client.collections.get("MultiTenancyCollection")
multi_collection.tenants.update(tenants=[
Tenant(
name="tenantA",
activity_status=TenantActivityStatus.OFFLOADED
)
])
Requires Offload Module

Tenant offloading requires an Offload module.

To enable tenant offloading, see the modules page

Automatically activate tenants

Added in v1.25.2

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 Configure

multi_collection = client.collections.create(
name="CollectionWithAutoTenantActivation",
multi_tenancy_config=Configure.multi_tenancy(
enabled=True,
auto_tenant_activation=True # Enable automatic tenant activation
)
)

Questions and feedback

If you have any questions or feedback, let us know in the user forum.