Search Documentation
Search across all documentation pages
Knowledge Graph
ExoVault's knowledge graph connects memories and notes with typed, directional relations. This enables agents to traverse connections, discover related context, and build a rich understanding of how knowledge fits together.
Relation Types#
Links between nodes use typed relations that describe the relationship:
| Relation | Meaning | Example |
|---|---|---|
derived_from | B was created based on A | A design doc derived from requirements |
refines | B adds detail to A | A detailed spec refines a high-level plan |
contradicts | B conflicts with A | A new finding contradicts an old assumption |
part_of | B is a component of A | A subtask is part of a larger task |
supersedes | B replaces A | A correction supersedes outdated knowledge |
references | B mentions or cites A | A note references a related memory |
source_of | A is the source for B | A note is the source of extracted memories |
wiki_link | B is linked from A via [[title]] | Wiki-link in note content |
manual | Explicitly created link | Agent or user manually linked two items |
Adding Links#
Use add_link to create a relation between any two nodes (memories or notes):
{
"sourceType": "memory",
"sourceId": "mem-uuid-1",
"targetType": "memory",
"targetId": "mem-uuid-2",
"relationType": "refines",
"label": "Adds implementation details"
}Node types can be memory or note. Links are directional (source -> target) and labels are optional. Labels are encrypted before storage.
Removing Links#
Use remove_link to delete a specific link by ID:
{
"linkId": "link-uuid"
}Viewing Links#
Use get_links to see all connections for a specific node:
{
"nodeType": "memory",
"nodeId": "mem-uuid",
"direction": "both",
"limit": 50
}The direction parameter controls which links to return:
"outgoing"-- links where this node is the source"incoming"-- links where this node is the target"both"(default) -- all links in either direction
Graph Exploration#
Use explore_graph for multi-hop traversal starting from a query or specific node:
{
"query": "authentication architecture",
"maxHops": 2,
"maxNodes": 50
}Or start from a known node:
{
"nodeId": "mem-uuid",
"nodeType": "memory",
"maxHops": 3,
"maxNodes": 100
}The response includes:
- entryPoints -- seed nodes found via semantic search or specified directly
- nodes -- all discovered nodes (memories and notes) with decrypted previews
- edges -- all relations between discovered nodes
- stats -- total counts and maximum hop depth reached
Related Memories#
Use get_related_memories for single-hop link traversal from a specific memory. This is lighter-weight than explore_graph when you just need direct neighbors:
{
"memoryId": "mem-uuid"
}Automatic Linking#
ExoVault creates links automatically in several cases:
- Wiki-links:
[[Title]]in note or memory content createswiki_linkrelations - Supersession: When a memory sets
supersededById, asupersedeslink is created - Source notes: The
sourceNoteIdsfield on memories createssource_oflinks - Related memories: The
relatedMemoryIdsfield onwrite_memorycreates typed links
Search Integration#
The search_memories pipeline uses the knowledge graph as a signal. After finding initial matches via semantic and keyword search, it expands the top results through graph neighbors, weighted by relation type:
refines: 1.0 (highest weight)derived_from: 0.9part_of: 0.9supersedes: 0.8references: 0.7source_of: 0.7wiki_link: 0.6contradicts: 0.5
Next Steps#
- Search Strategies -- Combine graph exploration with semantic search
- Memory Management -- Write memories with relatedMemoryIds
- Notes & Folders -- Wiki-links create graph connections