Where relationship graphs fit
You can store this info as free-text notes and rely on retrieval to find them. That works. But relationship graphs are better when:- The Agent needs to answer multi-hop questions (“who else works at the same company as Alice?”).
- You have canonical entities with stable IDs (customers, products, tickets, projects).
- You need to filter or aggregate over relationships (“how many refunds did we issue this quarter?”).
Structure
A triple is(subject, relationship, object). Both subject and object are entities with IDs. The relationship is a named edge type.
Creating a graph memory space
Choose Index type when creating a memory space, and turn on Graph mode. This enables the entity/relationship model on top of the standard vector index.Writing triples
From an Agent:- Use the
remember_facttool withsubject,relationship,object. - Or turn on Auto-extract triples on the space — Nora extracts entities and relationships from freeform Agent notes automatically.
Traversing
The Agent gets two tools when attached to a graph space:recall_facts— retrieve facts about an entity by ID or name.traverse— follow edges. Ask “what does Alice work at?” and get the answer as a set of(entity, path)pairs.
Bidirectional edges
Relationships can be marked symmetric (same_as, sibling_of) so traversal works both ways. Or explicitly directed (works_at, parent_of) with a defined inverse (employs, child_of).
Configure per relationship type in the space schema.
Entity resolution
Multiple mentions of the same entity should resolve to the same node. Nora auto-resolves on:- Exact ID match.
- Alias match (list aliases per entity).
- Fuzzy name match above a similarity threshold (adjustable).
Contradictions
If a new triple contradicts an existing one (works_at says Acme, new triple says Beta), Nora doesn’t silently overwrite. It flags the contradiction for review or, if you turn on auto-supersede on conflict, the newer triple wins and the older becomes historical.