llama-index Ladybug graph store integration
Project description
llama-index-ladybug
LlamaIndex graph store integration for Ladybug — an embedded graph database built for query speed and scalability. Ladybug is optimized for handling complex analytical workloads on very large databases and provides a set of retrieval features, such as full text search and vector indices.
The database was formerly known as Kùzu.
Installation
uv pip install llama-index-graph-stores-ladybug
Quick Start
LadybugPropertyGraphStore — unstructured (default)
No schema required. All LLM-extracted entities are stored as Entity type and only relation types are Links and Mentions.
from pathlib import Path
import ladybug as lb
from llama_index.graph_stores.ladybug import LadybugPropertyGraphStore
from llama_index.core import PropertyGraphIndex, SimpleDirectoryReader
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
# Create a Ladybug database
Path("my_graph.ladybug").unlink(missing_ok=True)
db = lb.Database("my_graph.ladybug")
embed_model = OpenAIEmbedding(model_name="text-embedding-3-small")
graph_store = LadybugPropertyGraphStore(
db,
use_vector_index=True,
embed_model=embed_model,
)
documents = SimpleDirectoryReader("./data").load_data()
index = PropertyGraphIndex.from_documents(
documents,
embed_model=embed_model,
property_graph_store=graph_store,
show_progress=True,
)
query_engine = index.as_query_engine()
response = query_engine.query("What are the main topics in these documents?")
print(response)
LadybugPropertyGraphStore — structured schema
Pass a relationship_schema to guide the LLM towards your schema.
strict_schema=False (default) allows the graph to expand beyond the declared types — off-schema entities and relations are stored in overflow tables alongside the schema-defined ones.
strict_schema=True enforces the schema strictly — off-schema entities and relations are silently dropped at ingest.
graph_store = LadybugPropertyGraphStore(
db,
relationship_schema=[
("PERSON", "WORKS_FOR", "ORGANIZATION"),
("PERSON", "KNOWS", "PERSON"),
],
has_structured_schema=True,
strict_schema=False, # True to reject off-schema types entirely
use_vector_index=True,
embed_model=embed_model,
)
LadybugGraphStore
import ladybug as lb
from llama_index.graph_stores.ladybug import LadybugGraphStore
from llama_index.core import KnowledgeGraphIndex, StorageContext, SimpleDirectoryReader
db = lb.Database("my_graph.ladybug")
graph_store = LadybugGraphStore(db)
storage_context = StorageContext.from_defaults(graph_store=graph_store)
documents = SimpleDirectoryReader("./data").load_data()
index = KnowledgeGraphIndex.from_documents(
documents,
max_triplets_per_chunk=2,
storage_context=storage_context,
)
query_engine = index.as_query_engine()
response = query_engine.query("What are the main topics in these documents?")
print(response)
Features
- Embedded — no server required; the database is a local directory
- Cypher queries — full Cypher support via
structured_query() - Vector index — HNSW vector index on chunk nodes for similarity search, built into the graph store
- Structured schemas — optionally enforce entity/relation types for higher-quality triple extraction
- Both graph store APIs — supports both
PropertyGraphIndex(LadybugPropertyGraphStore) and the legacyKnowledgeGraphIndex(LadybugGraphStore)
Documentation
Development
# Clone and set up
git clone https://github.com/stevereiner/llama-index-ladybug
cd llama-index-ladybug
uv sync --group dev
# Run tests
pytest
# Install pre-commit hooks (strips notebook outputs on commit)
pre-commit install
Acknowledgements
Started from the Kuzu → Ladybug llama-index support port by @adsharma (PR #20232) — a proposed LadybugDB (formerly Kùzu) integration into the upstream llama-index repo.
Requirements
- Python 3.10+
ladybug >= 0.15.3llama-index-core >= 0.14.20
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llama_index_graph_stores_ladybug-0.3.1.tar.gz.
File metadata
- Download URL: llama_index_graph_stores_ladybug-0.3.1.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59406247266275988780767316bb32593ef4d1783f67f35f2efaf3c9da37553f
|
|
| MD5 |
7017dc801e4b50ee748ba9cd1cc5e314
|
|
| BLAKE2b-256 |
3cbab807e3aa8c40e53d00cfcc6d87a7271538270218e5f09d921b8cc92e87d7
|
File details
Details for the file llama_index_graph_stores_ladybug-0.3.1-py3-none-any.whl.
File metadata
- Download URL: llama_index_graph_stores_ladybug-0.3.1-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6f3756df8f4ffcbab4166d3f2ca16c3a4b87a0ebf7dce059eb9c85f9721fa5d
|
|
| MD5 |
895285dd5896ae6e2d127d9aee93e0d7
|
|
| BLAKE2b-256 |
35a07710980cde3b256449295509ff82d916096eef4dbac33180144fd04c54a4
|