Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions mem0/vector_stores/valkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -607,18 +607,25 @@ def _process_document_fields(self, result, vector_id):

def _convert_bytes(self, data):
"""Convert bytes data back to string"""
if isinstance(data, bytes):
# Avoid repeated isinstance checks for common containers
data_type = type(data)
if data_type is bytes:
try:
return data.decode("utf-8")
except UnicodeDecodeError:
return data
if isinstance(data, dict):
return {self._convert_bytes(key): self._convert_bytes(value) for key, value in data.items()}
if isinstance(data, list):
elif data_type is dict:
# Use dict comprehension for both keys and values, avoid repeated lookups
# Preallocate list of items to minimize generator overhead
return {self._convert_bytes(k): self._convert_bytes(v) for k, v in data.items()}
elif data_type is list:
# Use list comprehension directly
return [self._convert_bytes(item) for item in data]
if isinstance(data, tuple):
elif data_type is tuple:
# Use tuple comprehension for efficiency
return tuple(self._convert_bytes(item) for item in data)
return data
else:
return data

def get(self, vector_id):
"""
Expand Down