Graph Memory
Layer relationships onto your search so agents remember who did what, when, and with whom.
How It Works
Graph Memory extends standard vector search by persisting nodes and edges alongside embeddings. This allows for "multi-hop" reasoning—finding connections that aren't explicitly stated in a single document but emerge from the relationships between facts.
When you add a memory, our extraction models identify entities (people, places, concepts) and the relationships between them (e.g., "works_at", "located_in").
These entities and relationships are stored in a graph database (Neo4j), while the semantic meaning is stored in a vector database.
Temporal Reasoning
Facts in MemoAir are not static; they have a lifespan. We track `valid_at` and `invalid_at` timestamps for every edge.
Example Scenario
- T1: "John works at Google" (Fact created)
- T2: "John joined MemoAir" (New fact)
- Result: The system invalidates the "works at Google" edge as of T2, but keeps it in history. Queries for "current employer" return MemoAir, while "past employers" includes Google.
HippoRAG
HippoRAG is our implementation of associative memory retrieval. Unlike standard RAG which retrieves based on direct similarity, HippoRAG activates nodes in the graph and spreads that activation to neighbors.
This allows the system to answer questions like "Who worked with the person that founded the company X?"—a query that requires traversing multiple relationships in the graph.