Summary
The long-term memory filtering logic appears to use the wrong response field name.
In the current Python package, memory retrieval filtering checks relevanceScore, but the actual RetrieveMemoryRecords response appears to return score.
Because of this mismatch, relevance filtering can become ineffective.
Affected areas
I found this behavior in at least these code paths:
bedrock_agentcore.memory.session.MemorySessionManager
bedrock_agentcore.memory.integrations.strands.session_manager.AgentCoreMemorySessionManager
Relevant logic currently looks like:
record.get("relevanceScore", config.relevance_score) >= config.relevance_score
and
m.get("relevanceScore", retrieval_config.relevance_score) >= retrieval_config.relevance_score
Actual behavior
MemoryClient.retrieve_memories(...) returns records with a score field, not relevanceScore.
Example response shape:
[
{
"memoryRecordId": "...",
"content": {"text": "..."},
"memoryStrategyId": "...",
"namespaces": ["..."],
"createdAt": ...,
"score": 0.35764614,
"metadata": {...}
}
]
If relevance_score=0.7, the current filtering code does this:
record.get("relevanceScore", 0.7) >= 0.7
Since relevanceScore is missing, it falls back to 0.7, so the condition becomes 0.7 >= 0.7, which passes.
As a result, records with score < 0.7 are still included.
Expected behavior
The relevance filtering should use the actual response field returned by RetrieveMemoryRecords.
Based on the current API response shape, this appears to be score.
Why this seems incorrect
The official AgentCore / Boto3 docs for RetrieveMemoryRecords show score in memoryRecordSummaries, not relevanceScore.
References:
These docs describe score as the relevance score for search results.
Minimal reproduction
- Configure memory retrieval with
relevance_score=0.7
- Call
MemoryClient.retrieve_memories(...)
- Observe returned records only contain
score
- Observe filtering code checks
relevanceScore
- Records with
score < 0.7 still pass filtering
Suggested fix
Use score instead of relevanceScore, or support both fields defensively.
For example:
record_score = record.get("score", record.get("relevanceScore", 0.0))
if record_score >= config.relevance_score:
...
and similarly in AgentCoreMemorySessionManager.
Environment
- Package:
bedrock-agentcore / bedrock_agentcore.memory
- Observed in local installed package code:
bedrock_agentcore/memory/session.py
bedrock_agentcore/memory/integrations/strands/session_manager.py
Summary
The long-term memory filtering logic appears to use the wrong response field name.
In the current Python package, memory retrieval filtering checks
relevanceScore, but the actualRetrieveMemoryRecordsresponse appears to returnscore.Because of this mismatch, relevance filtering can become ineffective.
Affected areas
I found this behavior in at least these code paths:
bedrock_agentcore.memory.session.MemorySessionManagerbedrock_agentcore.memory.integrations.strands.session_manager.AgentCoreMemorySessionManagerRelevant logic currently looks like:
and
Actual behavior
MemoryClient.retrieve_memories(...)returns records with ascorefield, notrelevanceScore.Example response shape:
[ { "memoryRecordId": "...", "content": {"text": "..."}, "memoryStrategyId": "...", "namespaces": ["..."], "createdAt": ..., "score": 0.35764614, "metadata": {...} } ]If
relevance_score=0.7, the current filtering code does this:Since
relevanceScoreis missing, it falls back to0.7, so the condition becomes0.7 >= 0.7, which passes.As a result, records with
score < 0.7are still included.Expected behavior
The relevance filtering should use the actual response field returned by
RetrieveMemoryRecords.Based on the current API response shape, this appears to be
score.Why this seems incorrect
The official AgentCore / Boto3 docs for
RetrieveMemoryRecordsshowscoreinmemoryRecordSummaries, notrelevanceScore.References:
retrieve_memory_records: https://docs.aws.amazon.com/boto3/latest/reference/services/bedrock-agentcore/client/retrieve_memory_records.htmlRetrieveMemoryRecords: https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_RetrieveMemoryRecords.htmlMemoryRecordSummary: https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_MemoryRecordSummary.htmlThese docs describe
scoreas the relevance score for search results.Minimal reproduction
relevance_score=0.7MemoryClient.retrieve_memories(...)scorerelevanceScorescore < 0.7still pass filteringSuggested fix
Use
scoreinstead ofrelevanceScore, or support both fields defensively.For example:
and similarly in
AgentCoreMemorySessionManager.Environment
bedrock-agentcore/bedrock_agentcore.memorybedrock_agentcore/memory/session.pybedrock_agentcore/memory/integrations/strands/session_manager.py