From 169a7a03d8f9127b859418cba30172578159ba06 Mon Sep 17 00:00:00 2001 From: VANDRANKI Date: Thu, 1 Oct 2026 12:56:31 -0400 Subject: [PATCH] Python: Fix VolatileMemoryStore.get_nearest_match returning an un-awaited coroutine --- .../memory/volatile_memory_store.py | 3 +- .../unit/memory/test_volatile_memory_store.py | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 python/tests/unit/memory/test_volatile_memory_store.py diff --git a/python/semantic_kernel/memory/volatile_memory_store.py b/python/semantic_kernel/memory/volatile_memory_store.py index dd1a631d0614..da7ededf5dfb 100644 --- a/python/semantic_kernel/memory/volatile_memory_store.py +++ b/python/semantic_kernel/memory/volatile_memory_store.py @@ -213,13 +213,14 @@ async def get_nearest_match( Returns: Tuple[MemoryRecord, float]: The record and the relevance score. """ - return self.get_nearest_matches( + results = await self.get_nearest_matches( collection_name=collection_name, embedding=embedding, limit=1, min_relevance_score=min_relevance_score, with_embeddings=with_embedding, ) + return results[0] async def get_nearest_matches( self, diff --git a/python/tests/unit/memory/test_volatile_memory_store.py b/python/tests/unit/memory/test_volatile_memory_store.py new file mode 100644 index 000000000000..c4c2dd1e0116 --- /dev/null +++ b/python/tests/unit/memory/test_volatile_memory_store.py @@ -0,0 +1,33 @@ +# Copyright (c) Microsoft. All rights reserved. + +import warnings + +import numpy as np +import pytest + +from semantic_kernel.memory.memory_record import MemoryRecord +from semantic_kernel.memory.volatile_memory_store import VolatileMemoryStore + + +@pytest.fixture +async def store() -> VolatileMemoryStore: + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + memory_store = VolatileMemoryStore() + await memory_store.create_collection("test") + await memory_store.upsert("test", MemoryRecord.local_record("a", "text a", None, None, np.array([1.0, 0.0]))) + await memory_store.upsert("test", MemoryRecord.local_record("b", "text b", None, None, np.array([0.0, 1.0]))) + return memory_store + + +async def test_get_nearest_match_returns_tuple(store: VolatileMemoryStore): + record, score = await store.get_nearest_match("test", np.array([1.0, 0.1])) + + assert record._id == "a" + assert score == pytest.approx(0.995, abs=1e-3) + + +async def test_get_nearest_match_respects_min_relevance_score(store: VolatileMemoryStore): + record, _ = await store.get_nearest_match("test", np.array([0.1, 1.0]), min_relevance_score=0.5) + + assert record._id == "b"