fix(memory): rank project memories by query intent
This commit is contained in:
@@ -428,6 +428,76 @@ def test_context_builder_tag_boost_orders_results(isolated_db):
|
||||
assert idx_tagged < idx_untagged
|
||||
|
||||
|
||||
def test_project_memory_ranking_ignores_scope_noise(isolated_db):
|
||||
"""Project words should not crowd out the actual query intent."""
|
||||
from atocore.memory.service import create_memory, get_memories_for_context
|
||||
|
||||
create_memory(
|
||||
"project",
|
||||
"Norman is the end operator for p06-polisher and requires an explicit manual mode to operate the machine.",
|
||||
project="p06-polisher",
|
||||
confidence=0.7,
|
||||
)
|
||||
create_memory(
|
||||
"project",
|
||||
"Polisher Control firmware spec document titled 'Fulum Polisher Machine Control Firmware Spec v1' lives in PKM.",
|
||||
project="p06-polisher",
|
||||
confidence=0.7,
|
||||
)
|
||||
create_memory(
|
||||
"project",
|
||||
"Machine design principle: works fully offline and independently; network connection is for remote access only",
|
||||
project="p06-polisher",
|
||||
confidence=0.5,
|
||||
)
|
||||
create_memory(
|
||||
"project",
|
||||
"Use Tailscale mesh for RPi remote access to provide SSH, file transfer, and NAT traversal without port forwarding.",
|
||||
project="p06-polisher",
|
||||
confidence=0.5,
|
||||
)
|
||||
|
||||
text, _ = get_memories_for_context(
|
||||
memory_types=["project"],
|
||||
project="p06-polisher",
|
||||
budget=360,
|
||||
query="how do we access the polisher machine remotely",
|
||||
)
|
||||
|
||||
assert "Tailscale" in text
|
||||
assert text.find("remote access only") < text.find("Tailscale")
|
||||
assert "manual mode" not in text
|
||||
|
||||
|
||||
def test_project_memory_ranking_prefers_multiple_intent_hits(isolated_db):
|
||||
"""A rich memory with several query hits should beat a terse one-hit memory."""
|
||||
from atocore.memory.service import create_memory, get_memories_for_context
|
||||
|
||||
create_memory(
|
||||
"project",
|
||||
"CGH vendor selected for p05. Active integration coordination with Katie/AOM.",
|
||||
project="p05-interferometer",
|
||||
confidence=0.7,
|
||||
)
|
||||
create_memory(
|
||||
"knowledge",
|
||||
"Vendor-summary current signal: 4D is the strongest technical Twyman-Green candidate; "
|
||||
"a certified used Zygo Verifire SV around $55k emerged as a strong value path.",
|
||||
project="p05-interferometer",
|
||||
confidence=0.9,
|
||||
)
|
||||
|
||||
text, _ = get_memories_for_context(
|
||||
memory_types=["project", "knowledge"],
|
||||
project="p05-interferometer",
|
||||
budget=220,
|
||||
query="what is the current vendor signal for the interferometer procurement",
|
||||
)
|
||||
|
||||
assert "4D" in text
|
||||
assert "Zygo" in text
|
||||
|
||||
|
||||
def test_expire_stale_candidates_keeps_reinforced(isolated_db):
|
||||
from atocore.memory.service import create_memory, expire_stale_candidates
|
||||
from atocore.models.database import get_connection
|
||||
|
||||
Reference in New Issue
Block a user