AI agents & LLM pipelines
Tools, entities, observations and decisions as a live graph. Retrieval becomes a pattern match, not a similarity score.
Vector retrieval recipesEmbedded · Rust · Cypher-like
LoraDB is an in-process graph store with a Cypher-like query engine — small enough to embed in an agent, a robot, or a stream processor, and expressive enough to model the relationships those systems actually depend on.
MATCH (a:Agent)-[:REMEMBERS]->(c:Context)
-[:ABOUT]->(e:Entity)
WHERE c.updated_at > datetime() - duration('PT1H')
RETURN e.id, collect(c.summary) AS recent_contextThe shape of the problem
Relational stores fight relational questions. Document stores fight evolving relationships. Graph platforms are often disproportionate — a service, a protocol, and a TCO that only pays off at scale, when all you wanted was a graph data structure next to the code that uses it. LoraDB is the option that was missing in the other direction: the one you reach for when the graph belongs inside your process.
Long formWhy an embedded graph at allThe argument in full — vs. SQL, vs. document stores, vs. managed graph platforms.What LoraDB is
Three places to start, depending on what you want to see first.
Built for
Tools, entities, observations and decisions as a live graph. Retrieval becomes a pattern match, not a similarity score.
Vector retrieval recipesModel claims, evidence, citations, and contradictions as typed edges. Ask "why do we believe this?" as a traversal.
Graph patternsResolve entities, infer relationships, and enrich events in-process with Cypher rules that read top-to-bottom.
Event recipesA graph data structure inside your own process. No service to deploy, no protocol to speak, no daemon to babysit.
Pick a bindingStart in a minute
There’s no server to stand up, no protocol to speak. Opening a LoraDB is a function call — in Node.js, Python, WASM, Go, or Ruby. Same Cypher, same result shape, across every binding.
import { createDatabase } from '@loradb/lora-node';
const db = await createDatabase(); // in-memory
// const db = await createDatabase('app', { databaseDir: './data' }); // ./data/app.loradb
await db.execute(
"CREATE (:Person {name: 'Ada'})-[:INFLUENCED]->(:Person {name: 'Grace'})"
);
const result = await db.execute(
"MATCH (a)-[:INFLUENCED]->(b) RETURN a.name, b.name"
);
console.log(result.rows);Where to next