# Collection configuration messages

Messages on this page are deprecation warnings from the Weaviate Python client. Nothing has failed: the collection was created or updated as you asked. The way the request described its vectors is on its way out, so the fix is always a rewrite of the configuration, never a change to your data. 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.
:::

## Deprecated vector configuration arguments

|           |                                                                                                                          |
| --------- | ------------------------------------------------------------------------------------------------------------------------ |
| Ids       | `py-dep017`, `py-dep023`, `py-dep024`, `py-dep025`                                                                       |
| Raised by | Python client                                                                                                            |
| Severity  | deprecation                                                                                                              |
| Impact    | The collection was created or updated, but the vectorizer\_config and vector\_index\_config arguments will stop working. |
| Fix       | Describe the model and the index inside one vector\_config definition.                                                   |

### What you see

One or more of these warnings when you create or update a collection:

```text
Dep024: You are using the `vectorizer_config` argument in `collection.config.create()`, which is deprecated.
            Use the `vector_config` argument instead.

Dep025: You are using the `vector_index_config` argument in `collection.config.create()`, which is deprecated.
            Use the `vector_config` argument instead defining `vector_index_config` as a sub-argument.

Dep017: You are using the `vector_index_config` argument in the `collection.config.update()` method, which is deprecated.
            Use the `vector_config` argument instead.

Dep023: You are using the `vectorizer_config` argument in the `collection.config.update()` method with a collection with named vectors, which is deprecated.
            Use the `vector_config` argument instead.
```

### Why it happens

A collection used to describe its embeddings as two independent settings: the model that produces the vector, and the index that stores it. That shape cannot express a collection with several differently configured vectors, which Weaviate supports. Both settings now live inside a single vector definition, and a collection holds one or more of them, each with a name. The old arguments still work, and a collection created with them keeps the older single-vector shape.

### How to fix it

Move the model and the index settings into one vector definition when you create the collection:

:::code-group
```python title="Current"
from weaviate.classes.config import Configure

client.collections.create(
    "Article",
    vector_config=Configure.Vectors.text2vec_weaviate(
        vector_index_config=Configure.VectorIndex.hnsw(),
    ),
)
```

```python title="Deprecated"
from weaviate.classes.config import Configure

client.collections.create(
    "Article",
    vectorizer_config=Configure.Vectorizer.text2vec_weaviate(),
    vector_index_config=Configure.VectorIndex.hnsw(),
)
```
:::

Updates name the vector they change. A collection created with the current argument, and no explicit vector name, has a single vector called `default`:

:::code-group
```python title="Current"
from weaviate.classes.config import Reconfigure

client.collections.get("Article").config.update(
    vector_config=Reconfigure.Vectors.update(
        name="default",
        vector_index_config=Reconfigure.VectorIndex.hnsw(ef=128),
    ),
)
```

```python title="Deprecated"
from weaviate.classes.config import Reconfigure

client.collections.get("Article").config.update(
    vector_index_config=Reconfigure.VectorIndex.hnsw(ef=128),
)
```
:::

:::callout{intent="warning" title="An existing collection is not converted in place"}
A collection created with the deprecated arguments keeps the older shape, so updating it raises the warning until the collection is recreated. The two update forms are not interchangeable, and the wrong one fails rather than warns. What you got back tells you which shape you have:

| What you got back                                                                                                                  | What it means                                                                       | What to do                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `KeyError: 'vectorConfig'`                                                                                                         | No named vectors: the collection was created with the deprecated arguments          | Keep the deprecated argument for this collection until you recreate it            |
| `KeyError: 'vectorIndexConfig'`                                                                                                    | The collection has named vectors, so the deprecated argument has nothing to address | Switch this call to the current form                                              |
| `WeaviateInvalidInputError: Invalid input provided: Vector config with name default does not exist in the existing vector config.` | The collection has named vectors, but none by that name                             | Use the name the collection gave its vector; it is only `default` if none was set |

Change the code that creates collections first: that is the form that will stop working.
:::

Rewriting a collection definition does not re-embed anything and does not touch stored vectors.

### Learn more

::::card-grid
:::card{title="Configure vectors for a collection" href="/guides/how-to-manage-collections-vector-config" icon="sliders-horizontal"}
:::

:::card{title="Collection configuration reference" href="/guides/reference-configuration-collections" icon="book"}
:::

:::card{title="Python client: vectorizer API changes" href="/guides/client-libraries-python#vectorizer-api-changes-v4160" icon="code"}
:::
::::

## Deprecated named vector syntax

|           |                                                                                                             |
| --------- | ----------------------------------------------------------------------------------------------------------- |
| Ids       | `py-dep026`                                                                                                 |
| Raised by | Python client                                                                                               |
| Severity  | deprecation                                                                                                 |
| Impact    | The vector was added, but the Configure.NamedVectors builders are aliases on their way out.                 |
| Fix       | Use Configure.Vectors, or Configure.MultiVectors for a multi-vector embedding. The arguments are unchanged. |

### What you see

A warning when you add a vector to an existing collection, quoted exactly as the client prints it, stray backtick included. The vector name in it is your own:

```text
Dep026: You are using the named vector syntax for vector title_vector, e.g. `Configure.NamedVectors` in `collection.config.add_vector()`, which is deprecated.
            Use `Configure.Vectors` or `Configure.MultiVectors` instead.`
```

### Why it happens

When named vectors were introduced they had their own set of builders, kept apart from the single-vector ones. Every vector is now a named vector, so the two sets were merged into one, split instead by whether the vector is a single vector or a multi-vector.

### How to fix it

:::code-group
```python title="Current"
from weaviate.classes.config import Configure

collection = client.collections.get("Article")
collection.config.add_vector(
    vector_config=Configure.Vectors.text2vec_weaviate(
        name="title_vector",
        source_properties=["title"],
    ),
)
```

```python title="Deprecated"
from weaviate.classes.config import Configure

collection = client.collections.get("Article")
collection.config.add_vector(
    vector_config=Configure.NamedVectors.text2vec_weaviate(
        name="title_vector",
        source_properties=["title"],
    ),
)
```
:::

For a multi-vector embedding, such as ColBERT or ColPali, use the multi-vector builders instead. If your warning names the `encoding` argument rather than the named vector syntax, it is the other message that ships under this same id: see [deprecated multi-vector index settings](#deprecated-multi-vector-index-settings).

### Learn more

::::card-grid
:::card{title="Configure vectors for a collection" href="/guides/how-to-manage-collections-vector-config" icon="sliders-horizontal"}
:::

:::card{title="Add a vector to an existing collection" href="/guides/how-to-manage-collections-vector-config#add-new-named-vectors" icon="plus"}
:::
::::

## Deprecated multi-vector index settings

|           |                                                                                                           |
| --------- | --------------------------------------------------------------------------------------------------------- |
| Ids       | `py-dep026`, `py-dep027`                                                                                  |
| Raised by | Python client                                                                                             |
| Severity  | deprecation                                                                                               |
| Impact    | The collection was created, but multi-vector settings placed on the index will stop being accepted there. |
| Fix       | Move multi\_vector and encoding off the index configuration and onto the vector definition.               |

### What you see

One or both of these warnings when you create a collection with a multi-vector embedding. You get both at once if you set an encoding inside the index configuration, because that nests one deprecated argument inside the other:

```text
Dep027: You are using the `multi_vector` argument in `Configure.VectorIndex.hnsw()`, which is deprecated.
            Use the `multi_vector` argument inside `Configure.MultiVectors.module()` instead.

Dep026: You are using the `encoding` argument in `Configure.VectorIndex.MultiVectors.multi_vector()`, which is deprecated.
            Use the `encoding` argument inside `Configure.MultiVectors.module()` instead.
```

:::callout{intent="note" title="The path in the second message is wrong"}
It names `Configure.VectorIndex.MultiVectors`, plural, which does not exist; the real one is `Configure.VectorIndex.MultiVector`, singular. Copying the path out of the warning fails. The working form is in the snippets below.
:::

### Why it happens

Whether a vector is a multi-vector is a property of the vector, not of the index that stores it, and the multi-vector builder you chose already implies it. Declaring it a second time on the index left two places that could disagree, so the setting moved onto the vector definition.

### How to fix it

Move the setting onto the vector definition. The `self_provided` builder below stands for whichever multi-vector builder you use:

:::code-group
```python title="Current"
from weaviate.classes.config import Configure

client.collections.create(
    "Document",
    vector_config=Configure.MultiVectors.self_provided(
        name="page_vector",
        multi_vector_config=Configure.VectorIndex.MultiVector.multi_vector(),
        vector_index_config=Configure.VectorIndex.hnsw(),
    ),
)
```

```python title="Deprecated"
from weaviate.classes.config import Configure

client.collections.create(
    "Document",
    vector_config=Configure.MultiVectors.self_provided(
        name="page_vector",
        vector_index_config=Configure.VectorIndex.hnsw(
            multi_vector=Configure.VectorIndex.MultiVector.multi_vector(),
        ),
    ),
)
```
:::

An encoding such as MUVERA moves the same way, onto the vector definition:

```python
from weaviate.classes.config import Configure

client.collections.create(
    "Document",
    vector_config=Configure.MultiVectors.self_provided(
        name="page_vector",
        encoding=Configure.VectorIndex.MultiVector.Encoding.muvera(),
        vector_index_config=Configure.VectorIndex.hnsw(),
    ),
)
```

### Learn more

::::card-grid
:::card{title="Multi-vector embeddings" href="/guides/how-to-manage-collections-vector-config#define-multi-vector-embeddings-eg-colbert-colpali" icon="layers"}
:::

:::card{title="Multi-vector embeddings tutorial" href="/guides/guides-tutorials-multi-vector-embeddings" icon="graduation-cap"}
:::

:::card{title="Multi-vector compression" href="/guides/how-to-configure-weaviate-compression-multi-vectors" icon="shrink"}
:::
::::

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