An embedded, in-memory knowledge graph database for Python — built in Rust for speed, with a Cypher query engine, semantic search, and first-class support for RAG pipelines and AI agents. No server, no setup, no infrastructure. Just pip install kglite and go.
- Zero infrastructure — runs inside your Python process. No database server to install, configure, or maintain.
- Fast — Rust core (via PyO3 + petgraph) with zero-copy where possible. Load millions of nodes without leaving Python.
- Query with Cypher — familiar graph query language for pattern matching, mutations, aggregations, and traversals.
- Built for AI — semantic search with
text_score(), schema introspection viadescribe(), and a ready-made MCP server for LLM tool use. - DataFrames in, DataFrames out — bulk-load from pandas, query results as DataFrames. Fits naturally into data science workflows.
pip install kgliteimport kglite
graph = kglite.KnowledgeGraph()
# Create nodes and relationships
graph.cypher("CREATE (:Person {name: 'Alice', age: 28, city: 'Oslo'})")
graph.cypher("CREATE (:Person {name: 'Bob', age: 35, city: 'Bergen'})")
graph.cypher("""
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:KNOWS]->(b)
""")
# Query — returns a ResultView (lazy; data stays in Rust until accessed)
result = graph.cypher("""
MATCH (p:Person) WHERE p.age > 30
RETURN p.name AS name, p.city AS city
ORDER BY p.age DESC
""")
for row in result:
print(row['name'], row['city'])
# Or get a pandas DataFrame
df = graph.cypher("MATCH (p:Person) RETURN p.name, p.age ORDER BY p.age", to_df=True)
# Persist to disk and reload
graph.save("my_graph.kgl")
loaded = kglite.load("my_graph.kgl")Store documents, chunks, and entities as a knowledge graph. Use text_score() for semantic similarity search and Cypher for structured retrieval — combine both for hybrid RAG.
graph.cypher("""
MATCH (c:Chunk)
RETURN c.text, text_score(c.embedding, $query_vec) AS score
ORDER BY score DESC LIMIT 5
""", params={"query_vec": query_embedding})Give LLM agents a structured, queryable memory. describe() generates a progressive-disclosure schema that agents can reason over, and the included MCP server exposes the graph as a tool.
xml = graph.describe() # schema for agent context
prompt = f"You have a knowledge graph:\n{xml}\nAnswer using graph.cypher()."Load CSVs or DataFrames, explore relationships, run graph algorithms (shortest path, centrality, community detection), and export results — all without leaving your notebook.
graph.add_nodes(data=users_df, node_type='User', unique_id_field='user_id', node_title_field='name')
graph.cypher("MATCH path = shortestPath((a:User {name:'Alice'})-[*]-(b:User {name:'Eve'})) RETURN path")Parse Python and Rust codebases into a knowledge graph with functions, classes, calls, and imports. Search, trace dependencies, and review code structure.
from kglite.code_tree import build
graph = build(".")
graph.cypher("MATCH (f:Function) RETURN f.name, f.file ORDER BY f.name")| Feature | Description |
|---|---|
| Cypher queries | MATCH, CREATE, SET, DELETE, MERGE, aggregations, ORDER BY, LIMIT, SKIP |
| Semantic search | Vector embeddings + text_score() for similarity ranking |
| Graph algorithms | Shortest path, centrality, community detection, clustering |
| Spatial | Coordinates, WKT geometry, distance and containment queries |
| Timeseries | Time-indexed data with ts_*() Cypher functions |
| Bulk loading | Fluent API (add_nodes / add_connections) for DataFrames |
| Blueprints | Declarative CSV-to-graph loading via JSON config |
| Import/Export | Save/load snapshots, GraphML, CSV export |
| AI integration | describe() introspection, MCP server, agent prompts |
| Code analysis | Parse codebases via tree-sitter (kglite.code_tree) |
Full docs at kglite.readthedocs.io:
- Getting Started — installation, first graph, core concepts
- Cypher Guide — queries, mutations, parameters
- Semantic Search — embeddings, vector search
- AI Agents — MCP server,
describe(), agent prompts - API Reference — full auto-generated reference
Python 3.10+ (CPython) | macOS (ARM/Intel), Linux (x86_64/aarch64), Windows (x86_64) | pandas >= 1.5
MIT — see LICENSE for details.