| import pytest
|
| import pytest_asyncio
|
| import os
|
| from mnemocore.core.config import get_config, reset_config
|
| from mnemocore.core.engine import HAIMEngine
|
|
|
| @pytest.fixture
|
| def test_engine(tmp_path):
|
| from mnemocore.core.hnsw_index import HNSWIndexManager
|
| HNSWIndexManager._instance = None
|
| reset_config()
|
|
|
| data_dir = tmp_path / "data"
|
| data_dir.mkdir()
|
|
|
| os.environ["HAIM_DATA_DIR"] = str(data_dir)
|
| os.environ["HAIM_ENCODING_MODE"] = "binary"
|
| os.environ["HAIM_DIMENSIONALITY"] = "1024"
|
| os.environ["HAIM_CONTEXT_ENABLED"] = "True"
|
|
|
| os.environ["HAIM_CONTEXT_SHIFT_THRESHOLD"] = "0.6"
|
| os.environ["HAIM_CONTEXT_ROLLING_WINDOW_SIZE"] = "3"
|
| os.environ["HAIM_TIERS_HOT_LTP_THRESHOLD_MIN"] = "0.01"
|
|
|
| reset_config()
|
| engine = HAIMEngine()
|
| yield engine
|
|
|
| del os.environ["HAIM_DATA_DIR"]
|
| del os.environ["HAIM_ENCODING_MODE"]
|
| del os.environ["HAIM_DIMENSIONALITY"]
|
| del os.environ["HAIM_CONTEXT_ENABLED"]
|
| del os.environ["HAIM_CONTEXT_SHIFT_THRESHOLD"]
|
| del os.environ["HAIM_CONTEXT_ROLLING_WINDOW_SIZE"]
|
| del os.environ["HAIM_TIERS_HOT_LTP_THRESHOLD_MIN"]
|
| reset_config()
|
|
|
| @pytest.mark.asyncio
|
| async def test_topic_tracker_and_context(test_engine):
|
| await test_engine.initialize()
|
|
|
|
|
| await test_engine.store("I love learning about Machine Learning and AI algorithms.")
|
| await test_engine.store("Neural networks and deep learning models are very powerful.")
|
| await test_engine.store("Pineapples belong on pizza. Yes, it is true.")
|
|
|
|
|
| await test_engine.query("Tell me about Machine Learning.")
|
| await test_engine.query("How do Neural Networks work?")
|
|
|
|
|
| ctx_nodes1 = await test_engine.get_context_nodes(top_k=2)
|
| assert len(ctx_nodes1) > 0, "Should retrieve context nodes"
|
|
|
|
|
| await test_engine.query("What about pizza toppings? Do pineapples belong?")
|
|
|
|
|
| assert len(test_engine.topic_tracker.history) == 1
|
|
|
|
|
| ctx_nodes2 = await test_engine.get_context_nodes(top_k=1)
|
|
|
| assert ctx_nodes2[0][0] != ctx_nodes1[0][0], "Context should have decisively shifted"
|
|
|
| await test_engine.close()
|
|
|