-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Open
Description
🐛 Describe the bug
Hit the problem when I'm using openmemory-mcp, trying to trigger delete memories
in the configuration, it's using qdrant as vector store.
error log as follows
openmemory-mcp | INFO Deleting memory with main.py:902
openmemory-mcp | memory_id=UUID('15f0fe7f-8581-4ded-bdaf
openmemory-mcp | -60e0808b7b04')
openmemory-mcp | WARNING Failed to delete memory mcp_server.py:340
openmemory-mcp | 15f0fe7f-8581-4ded-bdaf-60e0808b7
openmemory-mcp | b04 from vector store: 2
openmemory-mcp | validation errors for
openmemory-mcp | PointRequest
openmemory-mcp | ids.0.int
openmemory-mcp | Input should be a valid integer
openmemory-mcp | [type=int_type,
openmemory-mcp | input_value=UUID('15f0fe7f-8581-4
openmemory-mcp | ded-bdaf-60e0808b7b04'),
openmemory-mcp | input_type=UUID]
openmemory-mcp | For further information visit
openmemory-mcp | https://errors.pydantic.dev/2.11/
openmemory-mcp | v/int_type
openmemory-mcp | ids.0.str
openmemory-mcp | Input should be a valid string
openmemory-mcp | [type=string_type,
openmemory-mcp | input_value=UUID('15f0fe7f-8581-4
openmemory-mcp | ded-bdaf-60e0808b7b04'),
openmemory-mcp | input_type=UUID]
openmemory-mcp | For further information visit
openmemory-mcp | https://errors.pydantic.dev/2.11/
openmemory-mcp | v/string_type
qdrant accepts id as int64 or UUID string, however when triggering _delete_memory in main.py, from the logs above it mentioned the input_value failed validation
from the stack trace main.py:902 it's probably in this section of code
def _delete_memory(self, memory_id):
logging.info(f"Deleting memory with {memory_id=}")
existing_memory = self.vector_store.get(vector_id=memory_id)
prev_value = existing_memory.payload["data"]
self.vector_store.delete(vector_id=memory_id)
self.db.add_history(
memory_id,
prev_value,
None,
"DELETE",
actor_id=existing_memory.payload.get("actor_id"),
role=existing_memory.payload.get("role"),
is_deleted=1,
)
capture_event("mem0._delete_memory", self, {"memory_id": memory_id, "sync_type": "sync"})
return memory_id
the line self.vector_store.delete(vector_id=memory_id)
probably is triggering qdrant.py:154
def delete(self, vector_id: int):
"""
Delete a vector by ID.
Args:
vector_id (int): ID of the vector to delete.
"""
self.client.delete(
collection_name=self.collection_name,
points_selector=PointIdsList(
points=[vector_id],
),
)
mimi3421
Metadata
Metadata
Assignees
Labels
No labels