Skip to content

Fix memory deletion not removing from vector store#3610

Merged
prateekchhikara merged 1 commit intomem0ai:mainfrom
frederikb96:fix/memory-deletion-vector-store
Oct 18, 2025
Merged

Fix memory deletion not removing from vector store#3610
prateekchhikara merged 1 commit intomem0ai:mainfrom
frederikb96:fix/memory-deletion-vector-store

Conversation

@frederikb96
Copy link
Copy Markdown
Contributor

Problem

Memory deletion endpoints only updated PostgreSQL state but never deleted from Qdrant vector store. This caused:

  • Deleted memories still appearing in search results
  • Vector store growing indefinitely
  • Database and vector store getting out of sync

What was broken:

  1. REST API (DELETE /api/v1/memories/): Only called update_memory_state() to mark as deleted in DB
  2. MCP API (delete_all_memories): Called memory_client.delete(memory_id) but passed UUID instead of string

How It Works Elsewhere

The add_memories flow (both REST and MCP) properly syncs:

  1. Add to vector store via memory_client.add()
  2. Store metadata in PostgreSQL

Deletion should mirror this - remove from both stores.

The Fix

MCP API (delete_all_memories in mcp_server.py):

  • Convert UUID to string: memory_client.delete(str(memory_id))
  • Qdrant expects string IDs, not UUID objects

REST API (delete_memories in memories.py):

  • Added vector store deletion before DB update:
    1. Get memory client
    2. Delete from Qdrant via memory_client.delete(str(memory_id))
    3. Mark as deleted in PostgreSQL

Both endpoints now properly sync deletions across storage layers.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

  • Test Script - verified memories deleted from both Qdrant and PostgreSQL
  • Tested delete_all via MCP and bulk delete via REST API
  • Confirmed deleted memories no longer appear in search results

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • My changes generate no new warnings
  • Follows existing pattern from add_memories workflow

- MCP delete_all_memories: Convert UUID to string for vector store deletion
- REST delete_memories: Add vector store deletion before DB state update
- Both endpoints now properly delete from Qdrant and PostgreSQL
@parshvadaftari
Copy link
Copy Markdown
Contributor

Hey @frederikb96 Good catch! Thanks a lot for this fix.

CC: @VikramIyer125 Can you review this?

@prateekchhikara prateekchhikara merged commit d5a130b into mem0ai:main Oct 18, 2025
1 of 2 checks passed
@frederikb96 frederikb96 deleted the fix/memory-deletion-vector-store branch October 19, 2025 07:34
garciaba79 pushed a commit to garciaba79/mem0 that referenced this pull request Feb 12, 2026
jamebobob pushed a commit to jamebobob/mem0-vigil-recall that referenced this pull request Mar 29, 2026
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.

4 participants