Documentation Index
Fetch the complete documentation index at: https://docs.cognee.ai/llms.txt
Use this file to discover all available pages before exploring further.
What is the recall operation
The.recall operation is the main retrieval entry point in Cognee v1.0. It searches memory using the best available source for the request.
- Auto-routing by default: when you do not specify a search type,
recall()classifies the query and picks the best retrieval strategy automatically. - Session-aware: with
session_id, it can search session cache entries first and fall through to the permanent graph if needed. - Graph-backed: for permanent memory,
recall()runs graph retrieval and returns contextual results. - Source tagging: when results are returned as dicts, they include
_sourcemetadata so you can tell whether they came from"session"or"graph".
Where recall fits
- Use
recall()as the default way to ask questions over memory in v1.0. - Use it after Remember has created either permanent or session memory.
- Use explicit
query_typeonly when you want to force a specific retrieval mode. - Use datasets to scope results to a specific knowledge base.
What happens under the hood
-
Check session scope
- If you pass
session_idwithoutdatasetsand withoutquery_type, Cognee first searches the session cache directly. - Session search is keyword-based over stored question, context, and answer fields.
- If you pass
-
Choose the retrieval strategy
- If
query_typeis provided, Cognee uses it directly. - Otherwise, if
auto_route=True, a rule-based router picks the best strategy based on your query. See Auto-routing behavior below for the kinds of patterns it recognizes. - If
auto_route=False, Cognee falls back toGRAPH_COMPLETION.
- If
-
Run graph retrieval when needed
- If session search finds nothing, or if graph retrieval is requested,
recall()queries the permanent knowledge graph. - The retrieval strategy selected in step 2 determines how that graph query is executed.
- If session search finds nothing, or if graph retrieval is requested,
After recall finishes
- Session-only recall: you get matching session entries when cache hits exist, each tagged with
_source="session". - Graph-backed recall: you get results from the permanent graph, tagged with
_source="graph"when returned as dicts. - Hybrid behavior: with
session_idplus graph-scoping inputs likedatasetsorquery_type, recall uses the permanent graph path rather than session-only lookup.
Examples and details
Recall while indexing is still running
Recall while indexing is still running
recall() can run while another dataset is still being ingested or indexed in the background.- There is no global lock that blocks retrieval while
remember()is processing. recall()only sees data that has already made it through indexing.- If a dataset is mid-run, results may be incomplete until that run reaches completion.
cognee.datasets.get_status() or the indexing-status guidance on Remember.Auto-routing behavior
Auto-routing behavior
The built-in router uses query patterns to choose an underlying search mode:
- Summary-style prompts like “overview”, “summary”, or “key takeaways” bias toward summary retrieval.
- Relationship questions like “how are X and Y connected?” bias toward graph context-extension retrieval.
- Time-oriented questions like “when”, “before”, “after”, or year ranges bias toward temporal retrieval.
- Code-focused queries like “coding rules” or
async defbias toward coding-rules retrieval. - Exact quoted phrases bias toward lexical chunk search.
query_type explicitly and bypass the router.How recall relates to retrievers
How recall relates to retrievers
Most users should think in terms of asking memory a question, not selecting a retriever manually.Under the hood, retrieval strategies — graph completion, summary, temporal, lexical, coding-rules — do the actual work.
recall() is intentionally one layer above them:- you call
recall() - Cognee chooses or accepts a
query_type - the matching retriever runs underneath
- the result comes back through the recall API
What recall returns
What recall returns
- Session-only recall returns matching session cache entries.
- Graph-backed recall returns the output of the underlying retrieval mode selected by the router or
query_type. - Depending on the retrieval path, that can be a plain answer string, retrieved context, or structured result dictionaries.
- Returned dict results are tagged with
_sourceso callers can distinguish session from graph results. only_context=Trueskips the final LLM answer-generation step and returns retrieved context instead.verbose=Trueexposes extra retrieval details from the lower-level graph search path.
- Session Results
- Graph Results
When
recall() returns session cache hits, the result is a list of session-entry objects tagged with _source="session".These entries follow the session QA shape documented in Sessions and Caching, with fields such as:timeqa_idquestioncontextanswerfeedback_textfeedback_score_source
Using only_context
Using only_context
Set This is useful when you want to:
only_context=True when you want the retrieved context without asking Cognee to produce a final answer.When only_context=True, Cognee stops after retrieval formatting:- the LLM answer is not generated
- the final completion step is skipped
- the returned value is the retrieved context rather than a synthesized answer
- inspect what was retrieved before answer generation
- feed the retrieved context into your own prompt or downstream logic
- debug retrieval quality separately from answer quality
only_context=True keeps recall focused on retrieval output instead of answer generation.Session cache reads and writes during recall
Session cache reads and writes during recall
session_id makes recall session-aware, but the exact behavior depends on the recall mode.Session reads:- With
session_idand no explicitquery_type,recall()searches session-cache QA entries by keyword and returns matches tagged with_source="session". - If
session_idis used withdatasetsordataset_ids, recall can combine session lookup with graph retrieval. - If you pass an explicit
query_type, the default path is graph-backed retrieval. Session history can still be used during the LLM completion step, but session-cache QA lookup is not part of the default source set unless you passscope.
session_id and the LLM completion step is enabled, Cognee loads prior session conversation history and prepends it to the completion prompt. If improve() has saved a graph_context snapshot for that session, that snapshot is also prepended as background knowledge.Session writes:When the LLM completion step runs through session-enabled graph retrieval, Cognee appends a new QA entry to the session cache with the question, stored context, and generated answer. The next compatible recall on the same session_id can see that entry.Using only_context=True:Pass only_context=True to skip the final LLM completion. Because the QA write happens during completion, only_context=True also avoids adding a new QA entry to the session cache.only_context=True when you want retrieval output without LLM summarization and without growing the session cache.Dataset scoping
Dataset scoping
datasetslimits graph retrieval to named datasets. With backend access control enabled, names are resolved only against datasets owned by the current user.dataset_idsscopes retrieval by dataset UUID instead of name. Use this for shared datasets that the current user can access but did not create. When supplied, it takes precedence overdatasetsand the name-to-UUID resolution step is skipped.- With
session_idplus eitherdatasetsordataset_ids, recall becomes hybrid: session context is available, but graph retrieval is scoped to the selected dataset or dataset UUIDs.
Parameters
Parameters
- Basic Parameters
- Advanced Parameters
| Option | What it does |
|---|---|
query_text | The natural-language query to answer. |
query_type | Forces a specific underlying search type instead of using auto-routing. |
datasets | Restricts graph retrieval to specific dataset names. Names are resolved only against datasets owned by the current user. |
dataset_ids | Restricts graph retrieval by dataset UUIDs. Use this for shared datasets the current user did not create. Takes precedence over datasets when both are set. |
top_k | Limits the number of returned results. Defaults to 10. |
auto_route | Enables the rule-based query router. Defaults to True. |
session_id | Enables session-aware retrieval and session-cache lookup. |
only_context | Returns retrieved context only. The final LLM answer is not generated. |
system_prompt / system_prompt_path | Customizes the generation prompt. |
Under the hood — legacy operations
Under the hood — legacy operations
recall() runs Search under the hood for graph-backed retrieval.Use legacy Search directly when you need to select a specific retriever, inspect retrieval internals, or use advanced parameters not exposed by recall(). See also Search Basics for the full set of retrieval options.recall() vs search(): when to use each
recall() vs search(): when to use each
recall() | search() (legacy) | |
|---|---|---|
| Recommended for | Most v1.0 use cases | Advanced retriever control |
| Search type selection | Auto-routes by default; pass query_type to override | Always explicit; defaults to GRAPH_COMPLETION |
| Session behavior | Searches session-cache QA entries by keyword; falls through to graph on miss | session_id writes/reads conversation history only — no cache lookup |
| Source tagging | Results carry _source ("session" or "graph") | No source tagging |
| Parameter surface | Compact; power-user options via **kwargs | Full surface — neighborhood_depth, node_type, triplet_distance_penalty with explicit defaults |
recall() when you want to ask a question and get an answer. It handles routing, session lookup, and source attribution automatically.Use search() directly when you need a specific retriever, lower-level parameters such as neighborhood_depth or node_type, or when building custom pipelines.Remember
Create permanent or session memory
Improve
Enrich the graph for better future recall