Skip to content

Conversation

@themavik
Copy link

@themavik themavik commented Feb 9, 2026

Summary

Fixes #3780

When a memory action event is NONE (content doesn't need updating), the update() method in mem0/vector_stores/qdrant.py is called with vector=None to only update metadata/payload. Creating a PointStruct with vector=None causes a Pydantic validation error:

6 validation errors for PointStruct
vector.list[float]
  Input should be a valid list [type=list_type, input_value=None, input_type=NoneType]

Root Cause

The update() method unconditionally creates a PointStruct(id=vector_id, vector=vector, payload=payload) regardless of whether vector is None. Qdrant's PointStruct requires vector to be a valid list of floats.

Changes

  • When vector is provided: creates PointStruct and upserts as before
  • When only payload is provided (vector=None): uses client.set_payload() for a metadata-only update
  • When neither is provided: no-op (nothing to update)

Risk Assessment

Low - The fix is additive, using Qdrant's built-in set_payload() method for payload-only updates, which is the correct API for this use case.

…ation error

When a memory event is 'NONE' (no content update needed), the update()
method is called with vector=None to only update payload/metadata.
Creating PointStruct with vector=None causes a Pydantic validation error.

Now uses client.set_payload() for payload-only updates when vector is None,
and only creates a PointStruct when an actual vector is provided.

Fixes mem0ai#3780
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Qdrant PointStruct validation error (vector is None) in add method when event is 'NONE'

1 participant