You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An explicit CHUNKS recall with an identifier-only query can be classified as a conversational statement. Cognee then returns an acknowledgement before vector retrieval runs, even though the caller explicitly selected CHUNKS.
Reproduction
Store these two permanent memories in the same dataset:
COGNEE_IMPLICIT_UPDATE_TEST_20260822: The test value is ALPHA.
COGNEE_IMPLICIT_UPDATE_TEST_20260822: The test value is BETA.
However, the normal ChunksRetriever log line for starting chunk retrieval does not appear. Retrieval is skipped.
Expected behavior
Because the caller explicitly selected CHUNKS, Cognee should execute literal chunk retrieval and return matching stored chunks. The expected result includes both:
COGNEE_IMPLICIT_UPDATE_TEST_20260822: The test value is BETA.
COGNEE_IMPLICIT_UPDATE_TEST_20260822: The test value is ALPHA.
Root cause
ChunksRetriever inherits supports_session_turn_preparation = True from BaseRetriever.
In run_sequential_session_turn, prepare_session_turn_for_retrieval runs before get_retrieved_objects. The identifier-only query is interpreted as a conversational statement. When turn preparation returns should_answer = False, the function exits early with an acknowledgement and never invokes ChunksRetriever.get_retrieved_objects.
The current upstream main version of chunks_retriever.py does not opt out of session-turn preparation.
Verified workaround
Adding this class attribute fixes the exact reproduction:
class ChunksRetriever(BaseRetriever):
supports_session_turn_preparation = False
After applying it, the same MCP call returns the raw BETA and ALPHA chunks, with BETA ranked first. The server and client configuration are otherwise unchanged.
This opt-out pattern already exists for other non-conversational retrievers such as CodeRetriever and GraphReportRetriever.
Would the maintainers accept the ChunksRetriever opt-out above as an upstream fix? It may also be worth reviewing whether other literal retrieval modes should bypass conversational turn preparation.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
An explicit CHUNKS recall with an identifier-only query can be classified as a conversational statement. Cognee then returns an acknowledgement before vector retrieval runs, even though the caller explicitly selected CHUNKS.
Reproduction
Store these two permanent memories in the same dataset:
Then call the MCP recall tool with:
Actual behavior
The result is an acknowledgement rather than retrieved chunks:
The logs confirm that the explicit override was received:
However, the normal ChunksRetriever log line for starting chunk retrieval does not appear. Retrieval is skipped.
Expected behavior
Because the caller explicitly selected CHUNKS, Cognee should execute literal chunk retrieval and return matching stored chunks. The expected result includes both:
Root cause
ChunksRetriever inherits supports_session_turn_preparation = True from BaseRetriever.
In run_sequential_session_turn, prepare_session_turn_for_retrieval runs before get_retrieved_objects. The identifier-only query is interpreted as a conversational statement. When turn preparation returns should_answer = False, the function exits early with an acknowledgement and never invokes ChunksRetriever.get_retrieved_objects.
The current upstream main version of chunks_retriever.py does not opt out of session-turn preparation.
Verified workaround
Adding this class attribute fixes the exact reproduction:
After applying it, the same MCP call returns the raw BETA and ALPHA chunks, with BETA ranked first. The server and client configuration are otherwise unchanged.
This opt-out pattern already exists for other non-conversational retrievers such as CodeRetriever and GraphReportRetriever.
Environment
Related discussions
Would the maintainers accept the ChunksRetriever opt-out above as an upstream fix? It may also be worth reviewing whether other literal retrieval modes should bypass conversational turn preparation.
All reactions