# Model provider integrations

Weaviate integrates with a variety of [self-hosted](#locally-hosted) and [API-based](#api-based) models from a range of providers.

This enables an enhanced developed experience, such as the ability to:

- Import objects directly into Weaviate without having to manually specify embeddings, and
- Build an integrated retrieval augmented generation (RAG) pipeline with generative AI models.

## Model provider integrations

### API-based

| Model provider                   | Embeddings                                                                      | Generative AI                      | Others                               |
| -------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------- | ------------------------------------ |
| [Anthropic](anthropic.md)        | -                                                                               | [Text](anthropic-generative.md)    | -                                    |
| [Anyscale](anyscale.md)          | -                                                                               | [Text](anyscale-generative.md)     | -                                    |
| [AWS](aws.md)                    | [Text](aws-embeddings.md)                                                       | [Text](aws-generative.md)          | -                                    |
| [Cohere](cohere.md)              | [Text](cohere-embeddings.md), [Multimodal](cohere-embeddings-multimodal.md)     | [Text](cohere-generative.md)       | [Reranker](cohere-reranker.md)       |
| [Contextual AI](contextualai.md) | -                                                                               | [Text](contextualai-generative.md) | [Reranker](contextualai-reranker.md) |
| [Databricks](databricks.md)      | [Text](databricks-embeddings.md)                                                | [Text](databricks-generative.md)   | -                                    |
| [DeepSeek](deepseek.md)          | -                                                                               | [Text](deepseek-generative.md)     | -                                    |
| [DigitalOcean](digitalocean.md)  | [Text](digitalocean-embeddings.md)                                              | [Text](digitalocean-generative.md) | -                                    |
| [FriendliAI](friendliai.md)      | -                                                                               | [Text](friendliai-generative.md)   | -                                    |
| [Google](google.md)              | [Text](google-embeddings.md), [Multimodal](google-embeddings-multimodal.md)     | [Text](google-generative.md)       | -                                    |
| [Hugging Face](huggingface.md)   | [Text](huggingface-embeddings.md)                                               | -                                  | -                                    |
| [Jina AI](jinaai.md)             | [Text](jinaai-embeddings.md), [Multimodal](jinaai-embeddings-multimodal.md)     | -                                  | [Reranker](jinaai-reranker.md)       |
| [Mistral](mistral.md)            | [Text](mistral-embeddings.md)                                                   | [Text](mistral-generative.md)      | -                                    |
| [Morph](morph.md)                | [Text](morph-embeddings.md)                                                     | -                                  | -                                    |
| [NVIDIA](nvidia.md)              | [Text](nvidia-embeddings.md), [Multimodal](nvidia-embeddings-multimodal.md)     | [Text](nvidia-generative.md)       | [Reranker](nvidia-reranker.md)       |
| [OctoAI (Deprecated)](octoai.md) | [Text](octoai-embeddings.md)                                                    | [Text](octoai-generative.md)       | -                                    |
| [OpenAI](openai.md)              | [Text](openai-embeddings.md)                                                    | [Text](openai-generative.md)       | -                                    |
| [Azure OpenAI](openai-azure.md)  | [Text](openai-azure-embeddings.md)                                              | [Text](openai-azure-generative.md) | -                                    |
| [TwelveLabs](twelvelabs.md)      | [Multimodal](twelvelabs-embeddings-multimodal.md)                               | -                                  | -                                    |
| [Voyage AI](voyageai.md)         | [Text](voyageai-embeddings.md), [Multimodal](voyageai-embeddings-multimodal.md) | -                                  | [Reranker](voyageai-reranker.md)     |
| [Weaviate](weaviate.md)          | [Text](weaviate-embeddings.md), [Multimodal](weaviate-embeddings-multimodal.md) | -                                  | -                                    |
| [xAI](xai.md)                    | -                                                                               | [Text](xai-generative.md)          | -                                    |

#### Enable all API-based modules

All API-based model integrations are available by default starting with Weaviate `v1.33`.

To opt out, for example in an air-gapped or otherwise restricted deployment, set the [`API_BASED_MODULES_DISABLED` environment variable](../database-configuration/overview.md#API_BASED_MODULES_DISABLED) to `true`. Weaviate then loads only the modules that you list in [`ENABLE_MODULES`](../database-configuration/overview.md#ENABLE_MODULES). This variable was added in `v1.33`.

For releases before `v1.33`, enable all API-based modules by setting the [`ENABLE_API_BASED_MODULES` environment variable](../database-configuration/overview.md#ENABLE_API_BASED_MODULES) to `true`. Weaviate stopped reading that variable in `v1.33`.

### Locally hosted

| Model provider                     | Embeddings                                                                                     | Generative AI                | Others                               |
| ---------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------ |
| [GPT4All (Deprecated)](gpt4all.md) | [Text (Deprecated)](gpt4all-embeddings.md)                                                     | -                            | -                                    |
| [Hugging Face](transformers.md)    | [Text](transformers-embeddings.md), [Multimodal (CLIP)](transformers-embeddings-multimodal.md) | -                            | [Reranker](transformers-reranker.md) |
| [KubeAI](kubeai.md)                | [Text](kubeai-embeddings.md)                                                                   | -                            | -                                    |
| [Model2vec](model2vec.md)          | [Text](model2vec-embeddings.md)                                                                | -                            | -                                    |
| [Meta ImageBind](imagebind.md)     | [Multimodal](imagebind-embeddings-multimodal.md)                                               | -                            | -                                    |
| [Ollama](ollama.md)                | [Text](ollama-embeddings.md)                                                                   | [Text](ollama-generative.md) | -                                    |

:::card{title="Embedding Model Evaluation & Selection" href="https://academy.weaviate.io/courses/wa260-py" cover="/img/docs/weaviate-academy-purple.png"}
Embedding models are the heart of vector search. Learn how to evaluate and select appropriate embedding models for your use case.
:::

## How does Weaviate generate embeddings?

When a model provider integration for embeddings is enabled, Weaviate automatically generates embeddings for objects that are added to the database.

This is done by providing the source data to the integration provider, which then returns the embeddings to Weaviate. The embeddings are then stored in the Weaviate Database.

```mermaid
%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#4a5568',
    'primaryTextColor': '#2d3748',
    'primaryBorderColor': '#718096',
    'lineColor': '#718096',
    'secondaryColor': '#f7fafc',
    'tertiaryColor': '#edf2f7'
  }
}}%%

flowchart LR
    %% Style definitions
    classDef systemBox fill:#f7fafc,stroke:#3182ce,stroke-width:2px,color:#2d3748
    classDef weaviateBox fill:#f7fafc,stroke:#2d3748,stroke-width:2px,color:#2d3748
    classDef providerBox fill:#f7fafc,stroke:#48bb78,stroke-width:2px,color:#2d3748
    classDef component fill:white,stroke:#718096,stroke-width:1.5px,color:#2d3748,rx:6

    %% Model Provider section (leftmost)
    subgraph provider["Model Provider"]
        inference["🤖 Inference API /<br> Local Model"]
    end

    %% Weaviate section (middle)
    subgraph weaviate["Weaviate"]
        vectorizer["🔌 Model Provider<br> Integration"]
        core["⚡️ Data & vector store"]
    end

    %% User System (bottom)
    subgraph user["User System"]
        data["📄 Data"]
    end

    %% Connections
    data -->|"1\. Insert objects"| core
    core -->|"2\. Request vector"| vectorizer
    vectorizer -->|"3\. Request vector"| inference
    inference -->|"4\. Vector"| vectorizer
    vectorizer -->|"5\. Vector"| core

    %% Apply styles
    class user systemBox
    class weaviate weaviateBox
    class provider providerBox
    class data,core,vectorizer,inference component
```

Weaviate generates embeddings for objects as follows:

- Selects properties with `text` or `text[]` data types unless they are configured to be skipped
- Sorts properties in alphabetical (a-z) order before concatenating values
- Prepends the collection name if configured

:::callout{intent="note" title="Case sensitivity"}
For Weaviate versions before `v1.27`, the string created above is lowercased before being sent to the model provider. Starting in `v1.27`, the string is sent as is.

If you prefer the text to be lowercased, you can do so by setting the `LOWERCASE_VECTORIZATION_INPUT` environment variable.
The text is always lowercased for the `text2vec-contextionary` integration.
:::

## 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`.
