fix(vector_stores): return None from Redis.get() for missing IDs (#5625)

Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
Co-authored-by: Kartik <kartik.labhshetwar@mem0.ai>
This commit is contained in:
ly-wang19
2026-06-19 12:25:24 +05:30
committed by GitHub
co-authored by ly-wang19 Kartik
parent ff53fd60b7
commit c5971193a2
2 changed files with 17 additions and 0 deletions
+2
View File
@@ -263,6 +263,8 @@ class RedisDB(VectorStoreBase):
def get(self, vector_id):
result = self.index.fetch(vector_id)
if result is None:
return None
payload = {
"hash": result["hash"],
"data": result["memory"],
+15
View File
@@ -113,3 +113,18 @@ def test_list_with_filter_builds_query():
query = mock_index.search.call_args[0][0]
assert query.query_string() == "@user_id:{alice}"
def test_get_returns_none_for_missing_id():
"""get() must return None for a missing id.
redisvl's SearchIndex.fetch() returns None when the id is not found, so the
old code raised ``TypeError: 'NoneType' object is not subscriptable`` on
``result["hash"]``. Every other vector store returns None for a missing id,
and Memory relies on it (``if existing_memory is None``), so get() must too.
"""
db, mock_index = _make_redis_db()
mock_index.fetch.return_value = None
assert db.get("missing_id") is None
mock_index.fetch.assert_called_once_with("missing_id")