Spaces:
Running
Running
import pytest | |
from medirag.cache.local import SemanticCaching | |
# Test the SemanticCaching class with real embeddings and index interactions | |
def semantic_caching(): | |
# This will actually initialize the model and the index | |
return SemanticCaching(model_name='sentence-transformers/all-mpnet-base-v2', dimension=768, | |
json_file='real_test_cache.json') | |
def test_ask_cached_interaction(mocker, semantic_caching): | |
# Mock the `invoke_rag` method to control its behavior and monitor its usage | |
mock_invoke_rag = mocker.patch.object(semantic_caching, 'invoke_rag', | |
return_value="Paris") | |
# First invocation: this should lead to `invoke_rag` being called | |
first_response = semantic_caching.ask("What is the capital of France?") | |
assert first_response == "Paris" | |
mock_invoke_rag.assert_called_once() # Confirm it was called | |
# Second invocation: this should use the cached result, not call `invoke_rag` again | |
second_response = semantic_caching.ask("What is the capital of France?") | |
assert second_response == "Paris" | |
# Check that `invoke_rag` was still only called once (i.e., no additional calls) | |
mock_invoke_rag.assert_called_once() | |
# The response should be the same, and `invoke_rag` should not have been called again | |
assert first_response == second_response | |