Graph intelligence for autonomous AI agents¶
Odin is a Python library that guides AI agents through large knowledge graphs. It combines Personalized PageRank, learned edge-plausibility scoring (NPLL), and pattern detection to surface high-signal paths, so agents spend their compute on what matters.
What Odin provides¶
Navigation
Guided exploration¶
Odin is the compass, not the explorer. Given seed entities, it returns ranked, scored paths through the graph, leaving the agent to interpret what it finds instead of drowning in raw traversal.
Structure
Personalized PageRank¶
PPR identifies the structurally important nodes relative to your seeds, so exploration starts from the parts of the graph that actually matter.
Semantics
NPLL edge scoring¶
Neural Probabilistic Logic Learning scores how plausible each edge is, filtering semantically invalid paths that naive traversal would follow.
Search
Beam search¶
A bounded, best-first walk keeps multi-hop exploration tractable: top-K paths at each hop instead of exponential blow-up.
Patterns
Motifs & triage¶
Aggregation surfaces recurring motifs and produces a 0-100 triage score, giving agents a single prioritization signal per retrieval.
Zero-ops ML
Self-managing model¶
Odin trains its NPLL model from your graph on first run and persists the weights in ArangoDB. No separate ML pipeline, no .pt files to manage.
Quickstart¶
from arango import ArangoClient
from odin import OdinEngine
# 1. Connect to your knowledge graph
client = ArangoClient(hosts="http://localhost:8529")
db = client.db("my_graph", username="root", password="")
# 2. Initialize Odin (auto-trains NPLL from your graph on first run)
engine = OdinEngine(db=db, community_id="global")
# 3. Explore from seed entities
result = engine.retrieve(
seeds=["entity/claim_123", "entity/provider_456"],
max_paths=50,
hop_limit=3,
)
# 4. Read the ranked paths
print(f"Triage score: {result['triage']['score']}/100")
for p in result["paths"][:5]:
edges = p["edges"]
nodes = [edges[0]["u"], *(e["v"] for e in edges)] if edges else []
print(f" [{p['score']:.2f}]", " -> ".join(str(n) for n in nodes))
Where to start¶
If you are new to Odin, read in this order:
- Getting Started: install, connect ArangoDB, and run your first retrieval
- Architecture: the mental model for how the pipeline fits together
- Personalized PageRank → Beam Search → NPLL: the three scoring signals
- Triage & Insight Scoring: how paths become a single prioritization number
If you are evaluating for a specific use case:
- AI Agent Integration: wire Odin into an agent loop
- Healthcare Fraud Detection: a worked end-to-end example
- OdinEngine API: the full method surface
- Configuration: every parameter and its default
Explore the ecosystem¶
| Reference | Full API surface, parameters, and result schema. View reference |
| Source | Browse the code, open issues, and submit PRs. GitHub |
| PyPI | Install the released package: odin-engine |
| Prescott Data | The team behind Odin: prescottdata.io |