cognee.search() to query your processed datasets. Covers the basic call, core parameters, and result shapes.
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
readpermission for the user running the search
Code in Action
SearchType.GRAPH_COMPLETION is the default. It returns an LLM-generated answer backed by context retrieved from your knowledge graph.What Just Happened
cognee.search() retrieved relevant context from the knowledge graph and passed it to the LLM to generate an answer. Results are returned as a list.
Parameters Reference
All examples below assume you are inside an async function. Import helpers when needed:Core Parameters
Core Parameters
query_text(str, required): The question or phrase to search for.query_type(SearchType, optional, default:SearchType.GRAPH_COMPLETION): Sets the search mode. See Search Types for the full list and Retrievers for how each type maps to a retriever.top_k(int, optional, default: 10): Maximum number of results to return.
Prompt & Generation Parameters
Prompt & Generation Parameters
system_prompt_path(str, optional, default:"answer_simple_question.txt"): Path to a prompt file packaged with your project.system_prompt(Optional[str]): Inline prompt string. Overridessystem_prompt_pathwhen set.only_context(bool, optional, default: False): Return the retrieved context without passing it to the LLM.
Advanced Parameters
Advanced Parameters
wide_search_top_k(int, optional, default: 100): Caps initial candidate retrieval for graph-completion retrievers before ranking. Increase for broader recall on large graphs.triplet_distance_penalty(float, optional, default: 3.5): Penalty applied in graph retrieval ranking. Controls how triplet distance influences final result ordering.retriever_specific_config(dict, optional): Per-retriever options. Examples:response_modelfor typed LLM output;max_iterfor GRAPH_COMPLETION_COT;context_extension_roundsfor GRAPH_COMPLETION_CONTEXT_EXTENSION. See the API reference for full keys.verbose(bool, optional, default: False): Whentrue, results includetext_result,context_result, andobjects_resultfields alongside the answer.
Node Sets & Filtering Parameters
Node Sets & Filtering Parameters
These options scope the search to specific node sets. Set both
node_type and node_name to filter — use the same names you passed to cognee.add(..., node_set=[...]).node_type(Optional[Type], optional, default:NodeSet): The graph model to search. Leave asNodeSetunless you have a custom node model.node_name(Optional[List[str]]): Names of the node sets to include.
Interaction & History Parameters
Interaction & History Parameters
session_id(Optional[str]): Links this search to a conversation session. When the samesession_idis reused, previous Q&A turns are included in the LLM prompt. Only effective forGRAPH_COMPLETION,RAG_COMPLETION, andTRIPLET_COMPLETION; other search types do not read or write session history. If omitted while caching is enabled, Cognee writes todefault_session.See Sessions Guide for complete examples. To record feedback on answers, see the Feedback System.
Datasets & Users
Datasets & Users
-
datasets(Optional[Union[list[str], str]]): Limit search to specific dataset names. -
dataset_ids(Optional[Union[list[UUID], UUID]]): Same asdatasets, using UUIDs instead of names. -
user(Optional[User]): The user to run the search as. Required for multi-tenant flows or background jobs.WhenENABLE_BACKEND_ACCESS_CONTROL=true:-
Result shape: Searches run only on datasets the user can access. Results are returned as a list of per-dataset objects (
dataset_name,dataset_id,search_result). Useverbose=Trueto includetext_result,context_result, andobjects_resultin each item. -
Parallel execution: Multiple datasets are searched concurrently using
asyncio.gather()— total time is roughly that of the slowest single-dataset search. -
If no
useris given,get_default_user()is used (created if missing); an error is raised only if this user lacks dataset permissions. -
If
datasetsis not set, all datasets readable by the user are searched. An error is raised if none are accessible or if a requested dataset is forbidden.
ENABLE_BACKEND_ACCESS_CONTROL=false:- Dataset filters (
datasets,dataset_ids) are ignored — all data is searched. - Results are returned as a plain list (e.g.
["answer1", "answer2"]). If only one dataset is searched and the retriever returns a list, Cognee may unwrap one level for backwards compatibility.
-
Result shape: Searches run only on datasets the user can access. Results are returned as a list of per-dataset objects (
Citation and Source Tracking
Citation and Source Tracking
Provenance is available at two levels:
- Dataset level — when
ENABLE_BACKEND_ACCESS_CONTROL=true, every result is wrapped withdataset_nameanddataset_id. - LLM-completion modes — use
verbose=Trueto receive the raw retrieved objects alongside the generated answer.
Chunk-level fields (`CHUNKS`)
Chunk-level fields (`CHUNKS`)
SearchType.CHUNKS returns a list of dicts with these fields:| Field | Type | Description |
|---|---|---|
id | str | Unique ID of this chunk |
text | str | Raw chunk text |
chunk_index | int | Position of this chunk within the source document |
chunk_size | int | Token count of this chunk |
cut_type | str | How the boundary was chosen (sentence_end, paragraph_end, etc.) |
Summary-level fields (`SUMMARIES`)
Summary-level fields (`SUMMARIES`)
SearchType.SUMMARIES returns a list of dicts with these fields:| Field | Type | Description |
|---|---|---|
id | str | Unique ID of this summary |
text | str | Summary text |
Dataset-level provenance (access control enabled)
Dataset-level provenance (access control enabled)
When
ENABLE_BACKEND_ACCESS_CONTROL=true, every result is wrapped with dataset information:Raw source objects (LLM-completion modes)
Raw source objects (LLM-completion modes)
For modes that return a generated answer (
GRAPH_COMPLETION, RAG_COMPLETION, etc.), use verbose=True to receive the raw retrieved objects alongside the answer:Additional Examples
A complete runnable script:Expanded example
Expanded example
Custom Prompts
Learn about custom prompts for tailored answers
Permission Snippets
Multi-tenant deployment patterns
API Reference
Explore all search types and parameters
Sessions
Enable conversational memory with sessions