cognee.search()
to ask questions against your processed datasets. This guide shows the basic call and what each parameter does so you know which knob to turn.
Before you start:
- Complete Quickstart to understand basic operations
- Ensure you have LLM Providers configured for LLM-backed search types
- Run
cognee.cognify(...)
to build the graph before searching - Keep at least one dataset with
read
permission for the user running the search
Code in Action
SearchType.GRAPH_COMPLETION
is the default, so you get an LLM-backed answer plus supporting context as soon as you have data in your graph.What Just Happened
The search call uses the defaultSearchType.GRAPH_COMPLETION
mode to provide LLM-backed answers with supporting context from your knowledge graph. The results are returned as a list that you can iterate through and process as needed.
Parameters Reference
Most examples below assume you are inside an async function. Import helpers when you need them:Core Parameters
Core Parameters
query_text
(str, required): The question or phrase you want answered.query_type
(SearchType, optional, default:SearchType.GRAPH_COMPLETION
): Switch search modes without changing your code flow. See Search Types for the complete list.top_k
(int, optional, default: 10): Cap how many ranked results you want back.
Prompt & Generation Parameters
Prompt & Generation Parameters
system_prompt_path
(str, optional, default:"answer_simple_question.txt"
): Point to a prompt file packaged with your project.system_prompt
(Optional[str]): Inline override for experiments or dynamically generated prompts.only_context
(bool, optional, default: False): Skip LLM generation and just fetch supporting context chunks.use_combined_context
(bool, optional, default: False): Collapse results into a single combined response when you query multiple datasets.
use_combined_context
should only be set when ENABLE_BACKEND_ACCESS_CONTROL
is turned on. When access control is disabled, this parameter has no meaningful effect on dataset scoping.Node Sets & Filtering Parameters
Node Sets & Filtering Parameters
These options filter the graph down to the node sets you care about. In most workflows you set both: keep
node_type=NodeSet
and pass one or more set names in node_name
—the same labels you used when calling cognee.add(..., node_set=[...])
.node_type
(Optional[Type], optional, default:NodeSet
): Controls which graph model to search. Leave this asNodeSet
unless you’ve built a custom node model.node_name
(Optional[List[str]]): Names of the node sets to include. Cognee treats each string as a logical bucket of memories.
Interaction & History Parameters
Interaction & History Parameters
save_interaction
(bool, optional, default: False): Persist the Q&A as a graph interaction for auditing or later review.last_k
(Optional[int], optional, default: 1): When usingSearchType.FEEDBACK
, choose how many recent interactions to update with your feedback.
Datasets & Users
Datasets & Users
-
datasets
(Optional[Union[list[str], str]]): Limit search to dataset names you already know. -
dataset_ids
(Optional[Union[list[UUID], UUID]]): Same asdatasets
, but with explicit UUIDs when names collide. -
user
(Optional[User]): Provide a user object when running multi-tenant flows or background jobs.WhenENABLE_BACKEND_ACCESS_CONTROL=true
:-
Result shape: Searches run only on datasets the user can access and return either:
- Per dataset: list of
{dataset_name, dataset_id, search_result}
- Combined: single
CombinedSearchResult
with merged snippets (use_combined_context=True
)
- Per dataset: list of
-
If no
user
is given,get_default_user()
is used (created if missing); errors only if this user lacks dataset permissions. -
If
datasets
is not set, all datasets readable by the user are searched; errors if none are accessible or if requested datasets are forbidden.
WhenPermissionDeniedError
will be raised unless you search with the same user that added the data or grant access to the default user.ENABLE_BACKEND_ACCESS_CONTROL=false
- Dataset filters (
datasets
,dataset_ids
) are ignored — everything is searched. - Results normally come back as a plain list (
["answer1", "answer2"]
). - Setting
use_combined_context=True
here just wraps the same results in aCombinedSearchResult
without changing them.
-
Result shape: Searches run only on datasets the user can access and return either: