# Modules

Weaviate's functionality can be customized by using [modules](../concepts/modules.md). This page explains how to enable and configure modules.

## Instance-level configuration

At the instance (i.e. Weaviate cluster) level, you can:

- Enable modules
- Configure the default vectorizer module
- Configure module-specific variables (e.g. API keys), where applicable

This can be done by setting the appropriate [environment variables](../database-configuration/overview.md) as shown below.

:::callout{intent="tip" title="What about WCD?"}
Weaviate Cloud (WCD) instances come with modules pre-configured. See [this page](../manage-clusters/status.md#enabled-modules) for details.
:::

### Enable individual modules

You can enable modules by specifying the list of modules in the `ENABLE_MODULES` variable. For example, this code enables the `text2vec-transformers` module.

```yaml
services:
  weaviate:
    environment:
      ENABLE_MODULES: 'text2vec-transformers'
```

To enable multiple modules, add them in a comma-separated list.

This example code enables the `'text2vec-huggingface`, `generative-cohere`, and `qna-openai` modules.

```yaml
services:
  weaviate:
    environment:
      ENABLE_MODULES: 'text2vec-huggingface,generative-cohere,qna-openai'
```

### Enable all API-based modules

All API-based model integrations are available by default starting with Weaviate `v1.33`.
For older versions, you can enable all API-based modules by setting the `ENABLE_API_BASED_MODULES` variable to `true`. This will enable all API-based [model integrations](../model-provider-integrations/index.md), such as those for Anthropic, Cohere, OpenAI and so on by enabling the relevant modules. These modules are lightweight, so enabling them all will not significantly increase resource usage.

```yaml
services:
  weaviate:
    environment:
      ENABLE_API_BASED_MODULES: 'true'
```

The list of API-based modules can be found on the [model provider integrations page](../model-provider-integrations/index.md#api-based). You can also inspect the [source code](https://github.com/weaviate/weaviate/blob/main/adapters/handlers/rest/configure_api.go) where the list is defined.

Enabling individual modules can be combined with the API-based modules. For example, since API-based modules are enabled by default from `v1.33`, the example below enables the Ollama modules and the `backup-s3` module alongside them.

```yaml
services:
  weaviate:
    environment:
      ENABLE_MODULES: 'text2vec-ollama,generative-ollama,backup-s3'
```

To opt out of the API-based modules from `v1.33` onwards, set `API_BASED_MODULES_DISABLED` to `true`. The older `ENABLE_API_BASED_MODULES` variable is no longer read.

Note that enabling multiple vectorizer (e.g. `text2vec`, `multi2vec`) modules will disable the [`Explore` functionality](../apis/graphql-explore.md). If you need to use `Explore`, you should only enable one vectorizer module.

### Module-specific variables

You may need to specify additional environment variables to configure each module where applicable. For example, the `backup-s3` module requires the backup S3 bucket to be set via `BACKUP_S3_BUCKET`, and the `text2vec-contextionary` module requires the inference API location via `TRANSFORMERS_INFERENCE_API`.

Refer to the individual [module documentation](../modules/index.md) for more details.

## Vectorizer modules

The [vectorization integration](../model-provider-integrations/index.md) enable Weaviate to vectorize data at import, and to perform [`near<Media>`](../how-to-query-search/similarity.md) searches such as `nearText` or `nearImage`.

:::callout{intent="info" title="List of available vectorizer integrations"}
Can be found [in this section](../model-provider-integrations/index.md).
:::

### Enable vectorizer modules

You can enable vectorizer modules by adding them to the `ENABLE_MODULES` environment variable. For example, this code enables the `text2vec-cohere`, `text2vec-huggingface`, and `text2vec-openai` vectorizer modules.

```yaml
services:
  weaviate:
    environment:
      ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-openai'
```

### Default vectorizer module

You can specify a default vectorization module with the `DEFAULT_VECTORIZER_MODULE` variable as below.

If a default vectorizer module is not set, you must set a vectorizer in the schema before you can use `near<Media>` or vectorization at import time.

This code sets `text2vec-huggingface` as the default vectorizer. Thus, `text2vec-huggingface` module will be used unless another vectorizer is specified for that class.

```yaml
services:
  weaviate:
    environment:
      DEFAULT_VECTORIZER_MODULE: text2vec-huggingface
```

## Generative model integrations

The [generative model integrations](../model-provider-integrations/index.md) enable [retrieval augmented generation](../how-to-query-search/generative.md) functions.

### Enable a generative module

You can enable generative modules by adding the desired module to the `ENABLE_MODULES` environment variable. For example, this code enables the `generative-cohere` module and the `text2vec-huggingface` vectorizer module.

```yaml
services:
  weaviate:
    environment:
      ENABLE_MODULES: 'text2vec-huggingface,generative-cohere'
```

:::callout{intent="tip" title="`generative` module selection unrelated to `text2vec` module selection"}
Your choice of the `text2vec` module does not restrict your choice of `generative` module, or vice versa.
:::

## Tenant offload modules

Tenants can be offloaded to cold storage to reduce memory and disk usage, and onloaded back when needed.

See the [dedicated page on tenant offloading](../storage-and-backups/tenant-offloading.md) for more information on how to configure Weaviate for tenant offloading. For information on how to offload and onload tenants, see [How-to: manage tenant states](../how-to-manage-collections/tenant-states.md).

## Custom modules

See [here](../modules/custom-modules.md) how you can create and use your own modules.

## Usage modules

The [usage module](../modules/usage-modules.md) collects and uploads usage analytics to GCS or S3.

## Related pages

- [Concepts: Modules](../concepts/modules.md)
- [References: Modules](../modules/index.md)

## Questions and feedback

Have a question or feedback? Here's how to reach us.

::::card-grid
:::card{title="Community Forum" href="https://forum.weaviate.io/c/support" icon="messages-square"}
Ask questions and connect with other developers on our **Community forum**.
:::

:::card{title="Support" href="/guides/support-overview" icon="life-buoy"}
Weaviate Cloud user or customer? Find the right channel on the **Support page**.
:::
::::

## Related pages

- [Agents](./agents-index.md)
- [AI-assisted Weaviate code generation](./ai-assisted-vibe-coding-index.md)
- [APIs](./apis-index.md)
- [Authorization and authentication](./authorization-and-authentication-index.md)
- [Benchmarks](./benchmarks-index.md)
- [Best practices](./best-practices-index.md)
- [Client libraries](./clients-index.md)
- [Client Libraries / SDKs](./client-libraries-index.md)
- [Cloud](./cloud-index.md)
- [Cloud account management](./cloud-account-management-index.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
