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 lists the other groups.
Python hides DeprecationWarning raised inside a library by default. Run with python -W default::DeprecationWarning to see them all.
Deprecated vector configuration arguments
Message ids
py-dep017py-dep023py-dep024py-dep025
Raised by
Python client
Kind
Deprecation
What it means
The collection was created or updated, but the vectorizer_config and vector_index_config arguments will stop working.
The 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:
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:
- Current
- Deprecated
from weaviate.classes.config import Configure
client.collections.create(
"Article",
vector_config=Configure.Vectors.text2vec_weaviate(
vector_index_config=Configure.VectorIndex.hnsw(),
),
)
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:
- Current
- Deprecated
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),
),
)
from weaviate.classes.config import Reconfigure
client.collections.get("Article").config.update(
vector_index_config=Reconfigure.VectorIndex.hnsw(ef=128),
)
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
Deprecated named vector syntax
Message id
py-dep026
Raised by
Python client
Kind
Deprecation
What it means
The vector was added, but the Configure.NamedVectors builders are aliases on their way out.
The 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:
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
- Current
- Deprecated
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"],
),
)
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.
Learn more
Deprecated multi-vector index settings
Message ids
py-dep026py-dep027
Raised by
Python client
Kind
Deprecation
What it means
The collection was created, but multi-vector settings placed on the index will stop being accepted there.
The 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:
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.
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:
- Current
- Deprecated
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(),
),
)
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:
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
Questions and feedback
Have a question or feedback? Here's how to reach us.
