diff --git a/mem0/memory/main.py b/mem0/memory/main.py index 06e6b5976..62438502a 100644 --- a/mem0/memory/main.py +++ b/mem0/memory/main.py @@ -1047,11 +1047,10 @@ class Memory(MemoryBase): keys, encoded_ids = process_telemetry_filters(filters) capture_event("mem0.delete_all", self, {"keys": keys, "encoded_ids": encoded_ids, "sync_type": "sync"}) - # delete all vector memories and reset the collections + # delete matching vector memories individually (do NOT reset the collection) memories = self.vector_store.list(filters=filters)[0] for memory in memories: self._delete_memory(memory.id) - self.vector_store.reset() logger.info(f"Deleted {len(memories)} memories") diff --git a/tests/test_main.py b/tests/test_main.py index 4a38f6b3f..55ad661ff 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -196,12 +196,15 @@ def test_delete_all(memory_instance, version, enable_graph): memory_instance.enable_graph = enable_graph mock_memories = [Mock(id="1"), Mock(id="2")] memory_instance.vector_store.list = Mock(return_value=(mock_memories, None)) + memory_instance.vector_store.reset = Mock() memory_instance._delete_memory = Mock() memory_instance.graph.delete_all = Mock() result = memory_instance.delete_all(user_id="test_user") assert memory_instance._delete_memory.call_count == 2 + # Ensure the collection is NOT dropped — only matched memories should be removed + memory_instance.vector_store.reset.assert_not_called() if enable_graph: memory_instance.graph.delete_all.assert_called_once_with({"user_id": "test_user"})