Valori LogoValori

Working with records

The typical lifecycle of a record — insert, search, retrieve, update, delete.

Working with records

Insert
  ↓
Search
  ↓
Get
  ↓
Update metadata
  ↓
Soft-delete (or hard-delete)

Insert

Insert a record writes one vector. Batch insert writes many in one request — reach for it once you're writing more than a handful of vectors at a time, since it's one round trip instead of many.

Both accept a request_id (single insert) or per-item request_ids (batch) for idempotent writes: replaying the same id within the dedup window returns the record the first request created instead of inserting a duplicate. Pass one on every write your application might retry — network timeouts and retries are the normal case this protects, not an edge case.

Search

Vector search finds the nearest records to a query vector. It's read-only and doesn't touch anything you insert.

Get

Get a record fetches one record by id — useful for confirming what a search hit actually contains, or for reading current metadata before an update (see below).

Update metadata

Update metadata replaces metadata wholesale — not a merge. If you only want to change one field, fetch the current metadata with Get first, merge client-side, then send the full object.

Delete

Two different operations, not one:

  • Soft-delete a record — the record stops appearing in search, but its slot and audit history are kept. Reach for this by default.
  • Delete a record — frees the slot immediately. A genuine hard delete.

Encrypted records

Insert an encrypted record is a separate, special-purpose operation — not a normal searchable vector. Use it only when you need a payload that can be made permanently unreadable on demand (crypto-shredding).