High-performance embedded graph database with vector search
Project description
RayDB for Python
RayDB is a high-performance embedded graph database with built-in vector search. This package provides the Python bindings to the Rust core.
Features
- ACID transactions with commit/rollback
- Node and edge CRUD operations with properties
- Labels, edge types, and property keys
- Fluent traversal and pathfinding (BFS, Dijkstra, A*)
- Vector embeddings with IVF and IVF-PQ indexes
- Single-file storage format
Install
From PyPI
pip install raydb
From source
# Install maturin (Rust extension build tool)
python -m pip install -U maturin
# Build and install in development mode
cd ray-rs
maturin develop --features python
# Or build a wheel
maturin build --features python --release
pip install target/wheels/raydb-*.whl
Quick start (fluent API)
The fluent API provides a high-level, type-safe interface:
from raydb import ray, node, edge, prop, optional
# Define your schema
User = node("user",
key=lambda id: f"user:{id}",
props={
"name": prop.string("name"),
"email": prop.string("email"),
"age": optional(prop.int("age")),
}
)
Knows = edge("knows", {
"since": prop.int("since"),
})
# Open database
with ray("./social.raydb", nodes=[User], edges=[Knows]) as db:
# Insert nodes
alice = db.insert(User).values(key="alice", name="Alice", email="alice@example.com").returning()
bob = db.insert(User).values(key="bob", name="Bob", email="bob@example.com").returning()
# Create edges
db.link(alice, Knows, bob, since=2024)
# Traverse
friends = db.from_(alice).out(Knows).nodes().to_list()
# Pathfinding
path = db.shortest_path(alice).via(Knows).to(bob).dijkstra()
Quick start (low-level API)
For direct control, use the low-level Database class:
from raydb import Database, PropValue
with Database("my_graph.raydb") as db:
db.begin()
alice = db.create_node("user:alice")
bob = db.create_node("user:bob")
name_key = db.get_or_create_propkey("name")
db.set_node_prop(alice, name_key, PropValue.string("Alice"))
db.set_node_prop(bob, name_key, PropValue.string("Bob"))
knows = db.get_or_create_etype("knows")
db.add_edge(alice, knows, bob)
db.commit()
print("nodes:", db.count_nodes())
print("edges:", db.count_edges())
Fluent traversal
from raydb import TraverseOptions
friends = db.from_(alice).out(knows).to_list()
results = db.from_(alice).traverse(
knows,
TraverseOptions(max_depth=3, min_depth=1, direction="out", unique=True),
).to_list()
Vector search
from raydb import IvfIndex, IvfConfig, SearchOptions
index = IvfIndex(dimensions=128, config=IvfConfig(n_clusters=100))
training_data = [0.1] * (128 * 1000)
index.add_training_vectors(training_data, num_vectors=1000)
index.train()
index.insert(vector_id=1, vector=[0.1] * 128)
results = index.search(
manifest_json='{"vectors": {...}}',
query=[0.1] * 128,
k=10,
options=SearchOptions(n_probe=20),
)
for result in results:
print(result.node_id, result.distance)
Documentation
https://ray-kwaf.vercel.app/docs
License
MIT License - see the main project LICENSE file for details.
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 raydb-0.2.0.tar.gz.
File metadata
- Download URL: raydb-0.2.0.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
909dba3af3d738b699db0d77eb46b2e48469a3373b6e7be591a4b8075919f93c
|
|
| MD5 |
da37307ecc035993991f28dd2e110d26
|
|
| BLAKE2b-256 |
bce6e4b82e53261bdfecfbec76abaabb31ebb067437888c1602fd3a72917139b
|
File details
Details for the file raydb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: raydb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b496a3ec2f3d28bcc0e6990a856542470e9216368dd1dade5804797163f97fda
|
|
| MD5 |
49629ee9333f00c4cf5938ba7db99b6b
|
|
| BLAKE2b-256 |
0d5d4147e4f22b85ac412fd415b75315f0302bd056bf5fdeb820dd30251db01b
|