Skip to main content
Go to documentation:
⌘U
Weaviate Database

Develop AI applications using Weaviate's APIs and tools

Deploy

Deploy, configure, and maintain Weaviate Database

Query Agent

Run agentic search over your Weaviate Cloud collections

Weaviate Cloud

Manage and scale Weaviate in the cloud

Engram

Persistent memory for LLM agents and applications

Additional resources

Integrations
Weaviate Academy

Need help?

Weaviate LogoAsk AI Assistant⌘K
Support
Community Forum
Contributor guide

Manage tenant states & temperature

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
Tenant state and consistency

Tenant states are eventually consistent. Read more

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:

py docs  API docs
More infoCode snippets in the documentation reflect the latest client library and Weaviate Database version. Check the Release notes for specific versions.

If a snippet doesn't work or you have feedback, please open a GitHub issue.
from weaviate.classes.tenants import Tenant, TenantActivityStatus

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

Deactivate tenant​

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

py docs  API docs
More infoCode snippets in the documentation reflect the latest client library and Weaviate Database version. Check the Release notes for specific versions.

If a snippet doesn't work or you have feedback, please open a GitHub issue.
from weaviate.classes.tenants import Tenant, TenantActivityStatus

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

Offload tenant​

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

py docs  API docs
More infoCode snippets in the documentation reflect the latest client library and Weaviate Database version. Check the Release notes for specific versions.

If a snippet doesn't work or you have feedback, please open a GitHub issue.
from weaviate.classes.tenants import Tenant, TenantActivityStatus

multi_collection = client.collections.use("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​

Enable this to automatically activate INACTIVE or OFFLOADED tenants if a search, read, update, or delete operation is performed on them.

Activation is the only automatic state change. Weaviate never deactivates or offloads a tenant on its own: there is no idle timeout, no usage-based policy, and no background process that moves a tenant to INACTIVE or OFFLOADED. A tenant stays ACTIVE, and keeps using its resources, until you change its state.

To reclaim resources on a schedule, run your own job. A common pattern is a daily job that lists the collection's tenants, selects the ones your application has not used within your chosen window, and then calls Deactivate tenant or Offload tenant for them in one batched update. Track last use in your own application, and pair the job with autoTenantActivation so that a tenant that becomes active again is brought back on the next request.

py docs  API docs
More infoCode snippets in the documentation reflect the latest client library and Weaviate Database version. Check the Release notes for specific versions.

If a snippet doesn't work or you have feedback, please open a GitHub issue.
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​