diff --git a/redisvl/extensions/message_history/semantic_history.py b/redisvl/extensions/message_history/semantic_history.py index 41004f5f..dc02c70b 100644 --- a/redisvl/extensions/message_history/semantic_history.py +++ b/redisvl/extensions/message_history/semantic_history.py @@ -330,7 +330,13 @@ def get_relevant( # if we don't find semantic matches fallback to returning recent context if not messages and fall_back: - return self.get_recent(as_text=as_text, top_k=top_k, raw=raw, role=role) + return self.get_recent( + as_text=as_text, + top_k=top_k, + raw=raw, + session_tag=session_tag, + role=role, + ) if raw: return messages return self._format_context(messages, as_text) diff --git a/tests/integration/test_message_history.py b/tests/integration/test_message_history.py index 9bf09383..89f00f39 100644 --- a/tests/integration/test_message_history.py +++ b/tests/integration/test_message_history.py @@ -411,6 +411,22 @@ def test_semantic_scope(semantic_history): assert no_context == [] +@pytest.mark.requires_hf +def test_semantic_get_relevant_falls_back_within_the_requested_session( + semantic_history, +): + semantic_history.store("default prompt", "default response") + semantic_history.store("other prompt", "other response", session_tag="other") + + context = semantic_history.get_relevant( + "unrelated", session_tag="other", fall_back=True, distance_threshold=0 + ) + assert context == [ + {"role": "user", "content": "other prompt"}, + {"role": "llm", "content": "other response"}, + ] + + @pytest.mark.requires_hf def test_semantic_store_and_get_recent(semantic_history): context = semantic_history.get_recent()