Graph-grounded retrieval (GraphRAG)
Retrieve by walking the graph.
Nearest-text search is a good way to find a starting point — and a poor way to finish an answer. Once the document is a graph, you can find the best-matching facts, then expand across the relationships around them to bring back the connected context the answer really needs. One call, no external retrieval pipeline to wire together.
In Cypher
gds.semanticMatchExpand
Best-matching seeds plus an N-hop expansion across your relationships, in a single Cypher call — the seed match and the graph walk in one step.
// seeds + 2-hop expansion, one call
CALL gds.semanticMatchExpand(
'Document', 'embedding', $q, 10, 2)
YIELD nodeId, distance, score
RETURN nodeId, distance, score
ORDER BY distance, score DESC
Over HTTP
POST /memory/recall
One round-trip ranked recall for an agent turn: full-text and graph expansion combined server-side, returning the top-k grounded snippets ready to drop into a prompt.
# ranked recall in one round-trip
curl -X POST \
.../graphs/$GRAPH/memory/recall \
-d '{"query":"who supplies
tents to the Northwest region",
"k":5,"hops":1}'
Both return facts with their surrounding relationships attached, so the model reasons over connected evidence rather than a bag of similar sentences. Because everything lives in one engine, you can constrain retrieval with any predicate your graph supports — team, status, tenant, or a point in time. See the Cypher reference for predicate-filtered vector search.