Skip to main content
A point is the fundamental unit of data in Qdrant. Each point consists of:
  • ID: A unique identifier (integer or UUID)
  • Vector: One or more dense or sparse vectors
  • Payload: Optional JSON metadata

Point Structure

Here’s what a complete point looks like:
Every point must have an ID and at least one vector. Payload is optional but highly recommended for filtering and retrieval.

Point IDs

Qdrant supports two types of point IDs:

Integer IDs (u64)

Simple numeric identifiers from 0 to 2^64-1:

UUID IDs

Universally unique identifiers for distributed systems:
Use UUID IDs when:
  • Integrating with external systems that use UUIDs
  • Building distributed systems where IDs are generated independently
  • You need guaranteed global uniqueness
Point IDs within a collection must be unique. Upserting a point with an existing ID will replace the old point entirely.

Vector Data

Single Vector

Most common case - one vector per point:

Named Vectors

Multiple vectors of different types per point:

Sparse Vectors

For high-dimensional sparse data:

Payloads

Payloads are JSON objects attached to points for filtering and retrieval:
See Payloads for detailed information on payload types and indexing.

Batch Operations

Upserting Multiple Points

Efficiently insert or update many points at once:
Batch operations are much more efficient than individual upserts. Aim for batches of 100-1000 points.

Retrieving Points by ID

Deleting Points

Delete by IDs:
Delete by filter:

Scrolling Through Points

Iterate through all points in a collection:
Use scrolling for exports, backups, or full collection processing. For search, use the search endpoint instead.

Point Versioning

Each point has an internal version number that increments with each update:
Versions are used internally for consistency and can help with debugging updates.

Update Strategies

Upsert (Overwrite)

Replaces the entire point:

Set Payload (Merge)

Merges with existing payload:

Overwrite Payload (Replace)

Replaces payload without changing vector:

Delete Payload Keys

Remove specific fields:

Best Practices

Always prefer batch upserts over individual operations. Batching 100-1000 points provides optimal performance.
Stick with integer IDs unless you specifically need UUIDs. Integer IDs are more compact and efficient.
If using Cosine distance, normalize your vectors before insertion for consistent results.
Create payload indexes for fields you frequently filter on to improve query performance.
Keep payload sizes reasonable (less than 1KB per point). Store large objects externally and reference them in the payload.

Collections

Learn how collections organize and configure points

Vectors

Deep dive into vector types and configurations

Payloads

Understand payload structure and indexing

Indexing

Explore how points are indexed for fast search