Find Facts Relevant to a Specific Node

Below, we will go through how to retrieve facts which are related to a specific node in a Zep knowledge graph. First, we will go through some methods for determining the UUID of the node you are interested in. Then, we will go through some methods for retrieving the facts related to that node.

Find the node’s UUID

If you are interested in the user’s node specifically, we have a convenience method that returns the user’s node which includes the UUID.

An easy way to determine the UUID for other nodes is to use the graph explorer in the Zep Web app.

You can also programmatically retrieve all the nodes for a given user using our get nodes by user API, and then manually examine the nodes and take note of the UUID of the node of interest:

1# Initialize the Zep client
2zep_client = Zep(api_key=API_KEY)
3nodes = zep_client.graph.node.get_by_user_id(user_id="some user ID")
4print(nodes)
1center_node_uuid = "your chosen center node UUID"

Lastly, if your user has a lot of nodes to look through, you can narrow down the search by only looking at the nodes relevant to a specific query, using our graph search API:

1results = zep_client.graph.search(
2 user_id="some user ID",
3 query="shoe", # To help narrow down the nodes you have to manually search
4 scope="nodes"
5)
6relevant_nodes = results.nodes
7print(relevant_nodes)
1center_node_uuid = "your chosen center node UUID"

Use edge listing with the connected_node_uuids filter to retrieve only the facts connected to your chosen node. The server applies the filter, so you don’t fetch and discard every other edge in the graph:

1from zep_cloud.types import SearchFilters
2
3edges = zep_client.graph.edge.get_by_user_id(
4 user_id="some user ID",
5 filters=SearchFilters(connected_node_uuids=[center_node_uuid]),
6)
7relevant_facts = [edge.fact for edge in edges]

If you also need the neighboring nodes themselves — not just the facts — use get_neighbors, which returns each node connected to center_node_uuid together with the edges to it, in one paginated call.

Fetching every edge in the graph and filtering by source_node_uuid/target_node_uuid client-side, or the older graph.node.get_edges convenience endpoint, both work but scale poorly and — for get_edges — silently cap the result set. Prefer edge listing with connected_node_uuids for any graph beyond toy size.

You can also retrieve facts relevant to your node by using the graph search API with the node distance re-ranker:

1results = zep_client.graph.search(
2 user_id="some user ID",
3 query="some query",
4 reranker="node_distance",
5 center_node_uuid=center_node_uuid,
6)
7relevant_edges = results.edges
8relevant_facts = [edge.fact for edge in relevant_edges]

Summary

In this recipe, we went through how to retrieve facts which are related to a specific node in a Zep knowledge graph. We first went through some methods for determining the UUID of the node you are interested in. Then, we went through some methods for retrieving the facts related to that node.