Knowledge graphs
The questions worth asking usually span more than one system. A knowledge graph puts the join in the data model instead of in an application that has to fan out to four APIs and reconcile the results.
Multi-hop questions stay one query
Who else worked on the projects that depend on this service? Which documents reference an entity that a departing employee owned? In a relational model each hop is another join and another index to maintain. In Cypher it is another arrow in the pattern.
Full-text search where the entities already live
Full-text indexes with BM25 ranking run inside the database, so a keyword search returns nodes you can immediately traverse from. Finding the document and then walking to its author, its topics and its dependents is one round trip, not three.
Load from where your data already is
Import runs from object storage, warehouses and streams — S3, Google Cloud Storage, Azure Blob, BigQuery, Snowflake, Postgres, Kafka, Spark, Delta Lake and Iceberg — so building the graph does not start with writing an export pipeline.
CALL db.index.fulltext.queryNodes('docs', $q) YIELD node, score
MATCH (node)-[:MENTIONS]->(e:Entity)<-[:MENTIONS]-(related:Document)
WHERE related <> node
RETURN related.title, e.name, score
ORDER BY score DESC LIMIT 20Other use cases
Graph memory for AI agents
Give an agent a graph it can traverse instead of a transcript it has to re-read. One instance per agent, per session, or per tenant.
MATCH (a:Agent)-[:REMEMBERS]->(f:Fact)Read moreKnowledge graphs
Model people, documents, systems and the relationships between them, then answer questions that span all of them at once.
MATCH (d:Document)-[:MENTIONS]->(e:Entity)Read moreMulti-tenant graph applications
Give every tenant a real database instead of a tenant_id column. Isolation you can point at, and cost that scales with what each one uses.
CREATE (t:Tenant {id: $tenant})Read moreDependency & impact analysis
Model what depends on what — services, data, teams — and answer "if this breaks or changes, what's affected?" as a traversal instead of a spreadsheet.
MATCH (s:Service)<-[:DEPENDS_ON*1..]-(affected)Read moreReal-time recommendations
Compute "people like you also chose" live from the behaviour graph at request time — so a purchase a second ago changes the next suggestion.
MATCH (u)-[:BOUGHT]->(p)<-[:BOUGHT]-(peer)Read moreRobotics, hardware & the edge
Model the world a fleet shares — robots, devices, assets, tasks and their dependencies — as one graph the whole fleet can query in real time.
MATCH (r:Robot)-[:CAN_REACH]->(z:Zone)<-[:LOCATED_IN]-(a:Asset)Read moreStart now
~98.7%
token efficiency at 2,000 entities — see the footnotes above
Put your first graph up in a minute.
A free instance takes about a minute and no card. Write two MERGE statements, read them back, and you have a living graph — with provenance on every fact.
First-graph path
LiveCreate a free instance
No card. Ready in about a minute.
Connect your driver
bolt+ssc:// URI into the driver you already use.
Write two MERGEs
That's the entire shape of agent memory.
Point an agent at it
One MCP config block. No integration code.