Skip to content

Commit

Permalink
[bug]: Memory.reset() deletes collection and table without re-creatin…
Browse files Browse the repository at this point in the history
…g it (#1952)
  • Loading branch information
spike-spiegel-21 authored Oct 15, 2024
1 parent 9341d9f commit 3f2d5be
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
5 changes: 4 additions & 1 deletion mem0/memory/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ def _update_memory(self, memory_id, data, existing_embeddings, metadata=None):

try:
existing_memory = self.vector_store.get(vector_id=memory_id)
except Exception as e:
except Exception:
raise ValueError(f"Error getting memory with ID {memory_id}. Please provide a valid 'memory_id'")
prev_value = existing_memory.payload.get("data")

Expand Down Expand Up @@ -591,6 +591,9 @@ def reset(self):
"""
logger.warning("Resetting all memories")
self.vector_store.delete_col()
self.vector_store = VectorStoreFactory.create(
self.config.vector_store.provider, self.config.vector_store.config
)
self.db.reset()
capture_event("mem0.reset", self)

Expand Down
1 change: 1 addition & 0 deletions mem0/memory/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,4 @@ def get_history(self, memory_id):
def reset(self):
with self.connection:
self.connection.execute("DROP TABLE IF EXISTS history")
self._create_history_table()
15 changes: 11 additions & 4 deletions tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from mem0.configs.base import MemoryConfig
from mem0.memory.main import Memory
from mem0.utils.factory import VectorStoreFactory


@pytest.fixture(autouse=True)
Expand Down Expand Up @@ -171,13 +172,19 @@ def test_delete_all(memory_instance, version, enable_graph):

def test_reset(memory_instance):
memory_instance.vector_store.delete_col = Mock()
# persisting vector store to make sure previous collection is deleted
initial_vector_store = memory_instance.vector_store
memory_instance.db.reset = Mock()

memory_instance.reset()

memory_instance.vector_store.delete_col.assert_called_once()
memory_instance.db.reset.assert_called_once()
with patch.object(VectorStoreFactory, "create", return_value=Mock()) as mock_create:

memory_instance.reset()

initial_vector_store.delete_col.assert_called_once()
memory_instance.db.reset.assert_called_once()
mock_create.assert_called_once_with(
memory_instance.config.vector_store.provider, memory_instance.config.vector_store.config
)

@pytest.mark.parametrize(
"version, enable_graph, expected_result",
Expand Down

0 comments on commit 3f2d5be

Please sign in to comment.