# Weaviate Features and Practical Usage
๐ Ingesting data is just the start. From partial updates to conditional bulk deletes to existence checks, Weaviate's object management API covers the full CRUD you need to run a real sync pipeline.
๐ Title and Feature URL
Title: Manage objects
URL:
๐ Overview
Weaviate provides fundamental CRUD operations on objects within a collection: create, read, update (partial or full replacement), and delete. These are organized under the Python client's accessor, and the ability to choose between partial update and full replacement is central to operational design.
๐ง How It Works
The key methods are:
- insert: add a single object; you can also pass uuid, vector, and references.
- insert_many: add multiple objects at once.
- update: a partial update that modifies only the specified properties while preserving the rest.
- replace: overwrites the entire object with new data.
- delete_by_id: deletes a single object by UUID.
- delete_many: deletes multiple objects matching a filter.
- exists: checks whether an object is present.
When you modify properties configured for vectorization, Weaviate automatically regenerates the embeddings transparently during the update.
๐ Practical Usage
- Partial update: properties={"title": "Updated"})
- Full replacement: properties={"title": "New", "body": "Complete"})
- Conditional bulk delete: "brand").equal("OldBrand"))
- For reproducible IDs, use generate_uuid5() from weaviate.util so the same input always yields the same UUID, preventing duplicate IDs on re-import.
- delete_many supports dry_run (preview matches without deleting) and verbose for detailed output.
๐ฏ Use Cases
- For product master sync, apply only changed fields (price, description) via update's partial update.
- Purge a discontinued brand with delete_many(where=...) conditional bulk delete.
- Assign stable IDs with generate_uuid5 to prevent duplicate inserts in a daily sync.
- Confirm the target count with dry_run before running a production delete.
โ ๏ธ Caveats
- Updating a vectorized property triggers automatic re-vectorization and incurs embedding cost; factor "updating the description = embedding cost" into your sync design.
- update is partial, replace is full; properties omitted from a replace are dropped, so don't confuse the two.
- delete_many is bounded by a QUERY_MAXIMUM_RESULTS limit to prevent resource exhaustion; large deletes must be batched.
- Deletes are generally irreversible; make dry_run previews a habit.
#
Weaviate# #
VectorDatabase#