Is your feature request related to a problem?
1. Memory Retrieval Scope of Retrieval Agents
All agents except ToolSelectAgent—namely MemMachineAgent, SplitQueryAgent, and ChainOfQueryAgent—search only Episodic Memory.
Is there a specific reason why the search scope is limited to Episodic Memory? Why isn’t Semantic Memory searched together?
Wouldn’t answer quality improve if the agents retrieved results from both Episodic and Semantic Memory, rather than relying only on Episodic Memory?
For example, when a query asks about user-related information, if the agents also search Semantic Memory, they could respond immediately.
However, if they search only Episodic Memory, they must first find the relevant episodes and then extract the user-related information from them to produce an answer.
This approach would make the response significantly slower.
2. Search Queries of SplitQueryAgent
The SplitQueryAgent uses only sub-queries when performing the Search phase.
|
for sub_query in sub_queries: |
|
perf_metrics["queries"].append(sub_query) |
|
param = query.model_copy() |
|
param.query = sub_query |
Why are only sub-queries used during Search?
Including the original query helps compensate for the limitations of query decomposition.
- Preserve the original query’s context (intent and combined semantics) during ranking
- Recover high-level or summarized memories that may not be captured by individual sub-queries
- Avoid interference between decomposed queries and the holistic meaning of the original query
This approach ensures both fine-grained recall via sub-queries and context-aware relevance via the original query.
Describe the solution you'd like
When performing memory retrieval:
- All agents, except the ToolSelectAgent, should also retrieve semantic memory.
- The SplitQueryAgent should additionally perform a search using the original query.
Describe alternatives you've considered
No response
Additional context
No response
Is your feature request related to a problem?
1. Memory Retrieval Scope of Retrieval Agents
All agents except ToolSelectAgent—namely MemMachineAgent, SplitQueryAgent, and ChainOfQueryAgent—search only Episodic Memory.
Is there a specific reason why the search scope is limited to Episodic Memory? Why isn’t Semantic Memory searched together?
Wouldn’t answer quality improve if the agents retrieved results from both Episodic and Semantic Memory, rather than relying only on Episodic Memory?
For example, when a query asks about user-related information, if the agents also search Semantic Memory, they could respond immediately.
However, if they search only Episodic Memory, they must first find the relevant episodes and then extract the user-related information from them to produce an answer.
This approach would make the response significantly slower.
2. Search Queries of SplitQueryAgent
The SplitQueryAgent uses only sub-queries when performing the Search phase.
MemMachine/packages/server/src/memmachine_server/retrieval_agent/agents/split_query_agent.py
Lines 186 to 189 in de9bacb
Why are only sub-queries used during Search?
Including the original query helps compensate for the limitations of query decomposition.
This approach ensures both fine-grained recall via sub-queries and context-aware relevance via the original query.
Describe the solution you'd like
When performing memory retrieval:
Describe alternatives you've considered
No response
Additional context
No response