Messages on this page are deprecation warnings from the Weaviate Python client, raised when a collection asks for a model integration under a name that has been renamed or retired. The provider is still supported; only the name it is configured under has changed. If your message is not here, the [message index](errors.md) lists the other groups.

:::callout{intent="tip" title="Not seeing the warning?"}
Python hides `DeprecationWarning` raised inside a library by default. Run with `python -W default::DeprecationWarning` to see them all.
:::

## Google integrations renamed from PaLM

|           |                                                                                                                                                                      |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ids       | `py-dep011`, `py-dep012`, `py-dep013`                                                                                                                                |
| Raised by | Python client                                                                                                                                                        |
| Severity  | deprecation                                                                                                                                                          |
| Impact    | The collection works, but it is configured under the retired PaLM name. The removal date in the message has passed, so treat the old names as removable at any time. |
| Fix       | Configure the Google integration for the service you use, Vertex AI or the Gemini API, and send that service's credential header.                                    |

### What you see

One of these warnings when you configure a collection. It prints as soon as the configuration object is built, before any request reaches Weaviate, usually together with a generic deprecation notice naming the same replacement:

```text
Dep011: text2vec-palm is deprecated and will be removed in Q2 25. Use text2vec-google instead.
Dep012: multi2vec-palm is deprecated and will be removed in Q2 25. Use multi2vec-google instead.
Dep013: generative.palm is deprecated and will be removed in Q2 25. Use generative.google instead.
```

:::callout{intent="note" title="The message's own advice is a step behind"}
Do the rename the message asks for and you get a second deprecation warning, because `text2vec-google` and `generative.google` have since been split by service. Skip to the service-specific form below and you are done in one edit.
:::

### Why it happens

Google retired the PaLM name and reorganized these models under Vertex AI and the Gemini API. Weaviate followed in two steps: first renaming the integrations from `palm` to `google`, then splitting the Google embedding and generative integrations by service, because Vertex AI and the Gemini API authenticate differently and expose different models. The message was written after the first step, which is why its advice is out of date rather than wrong.

### How to fix it

Pick the Google service you actually use, then configure every integration for it. Vertex AI needs the Google Cloud project that owns the model (and, for multimodal, the region); the Gemini API needs neither, and asking for the wrong one means being asked for a project id you do not have.

::::tabs{sync="google-service"}
:::tab{title="Vertex AI"}
```python
from weaviate.classes.config import Configure

# Each call creates its own collection: pick the ones you need.

# Text embeddings (was text2vec_palm)
client.collections.create(
    "Article",
    vector_config=Configure.Vectors.text2vec_google_vertex(project_id="my-project"),
)

# Multimodal embeddings (was multi2vec_palm)
client.collections.create(
    "Article",
    vector_config=Configure.Vectors.multi2vec_google(
        project_id="my-project",
        location="us-central1",
        text_fields=["title"],
    ),
)

# Generative search (was generative.palm)
client.collections.create(
    "Article",
    generative_config=Configure.Generative.google_vertex(project_id="my-project"),
)
```

Send the credential header for Vertex AI, `X-Goog-Vertex-Api-Key`. It replaces `X-Google-Vertex-Api-Key`, `X-Google-Api-Key`, and `X-Palm-Api-Key`.
:::

:::tab{title="Gemini API"}
```python
from weaviate.classes.config import Configure

# Each call creates its own collection: pick the ones you need.

# Text embeddings (was text2vec_palm)
client.collections.create(
    "Article",
    vector_config=Configure.Vectors.text2vec_google_gemini(),
)

# Multimodal embeddings (was multi2vec_palm)
client.collections.create(
    "Article",
    vector_config=Configure.Vectors.multi2vec_google_gemini(
        text_fields=["title"],
    ),
)

# Generative search (was generative.palm)
client.collections.create(
    "Article",
    generative_config=Configure.Generative.google_gemini(),
)
```

Send the credential header for the Gemini API, `X-Goog-Studio-Api-Key`. It replaces `X-Google-Studio-Api-Key`, `X-Google-Api-Key`, and `X-Palm-Api-Key`.
:::
::::

:::callout{intent="warning" title="Check the server version before switching headers"}
The current headers need a server on v1.27.7, v1.26.12 or v1.25.27 at the least. An older server answers them with an authentication error rather than a helpful one, so stay on the deprecated header until you upgrade. The deprecated headers still work everywhere, so a running application does not break when you change the collection definition.
:::

Three things to know when you make the change:

- **The collection reports the old name back.** Weaviate stores these integrations under their original module names, so a collection configured this way still reads back as `text2vec-palm`, `multi2vec-palm`, or `generative-palm`. That is the storage name, not the name you configure, and it does not need fixing.
- **The current forms also use `vector_config`.** That is a separate deprecation, covered in [deprecated vector configuration arguments](errors-collection-configuration.md#deprecated-vector-configuration-arguments); both land in the same edit because the current builders only exist in the new shape.
- **Existing collections are unaffected.** The integration is recorded when the collection is created. Change the name in the code that creates new collections; rewriting an existing collection means re-embedding its objects, which is only worth doing if you also want to change the model.

### Learn more

::::card-grid
:::card{title="Google embeddings" href="/guides/model-provider-integrations-google-embeddings#configure-the-vectorizer" icon="type"}
:::

:::card{title="Google multimodal embeddings" href="/guides/model-provider-integrations-google-embeddings-multimodal#configure-the-vectorizer" icon="images"}
:::

:::card{title="Google generative models" href="/guides/model-provider-integrations-google-generative#configure-collection" icon="message-square-more"}
:::

:::card{title="API credentials and headers" href="/guides/model-provider-integrations-google-embeddings#api-credentials" icon="key"}
:::

:::card{title="All Google integrations" href="/guides/model-provider-integrations-google" icon="workflow"}
:::
::::

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