AstraeaDB is a cloud-native, AI-first graph database written in Rust. It is designed from the ground up for workloads that combine traditional graph analytics with modern vector similarity search and retrieval-augmented generation (RAG). Its core data model is the Vector-Property Graph, which extends the classical property graph with dense vector embeddings and temporal edge validity windows.
Key characteristics of AstraeaDB include:
valid_from / valid_to in epoch
milliseconds), enabling time-travel queries over the graph.AstraeaDB organises data into nodes and edges:
Nodes have:
c("Person", "Engineer")).list(name = "Alice", age = 30)).c(0.12, 0.87, 0.45, ...)).Edges have:
"KNOWS").valid_from and valid_to, both expressed as
milliseconds since the Unix epoch. Only edges whose window includes the
query timestamp are visible in temporal queries.AstraeaDB exposes three network endpoints simultaneously:
| Transport | Default Port | Protocol | Best For |
|---|---|---|---|
| JSON/TCP | 7687 | Line-delimited JSON | General CRUD, interactive use |
| gRPC | 7688 | Protocol Buffers | Service-to-service calls |
| Arrow Flight | 7689 | Apache Arrow Flight | Bulk queries, analytics |
The AstraeaDB R package provides three client classes that map to these transports:
AstraeaClient – JSON/TCP client (always available, no
extra dependencies).ArrowClient – Arrow Flight client (requires the
optional arrow package).UnifiedClient – Automatically selects the best
transport. CRUD operations go through JSON/TCP; GQL queries use Arrow
Flight when the arrow package is installed, falling back to
JSON/TCP otherwise.For most users, AstraeaClient or the convenience
function astraea_connect() is the recommended starting
point.
The R package exposes the full AstraeaDB feature set:
alpha blending
parameter.MATCH / WHERE /
RETURN / ORDER BY / LIMIT
syntax.graph_rag() pipeline that
answers natural-language questions using graph context.Before using the R package, you must have an AstraeaDB server running and accessible on the network. You can start a local development server with:
By default the server listens on:
127.0.0.1:7687 (JSON/TCP)127.0.0.1:7688 (gRPC)127.0.0.1:7689 (Arrow Flight)You can verify the server is reachable from R before connecting:
The following example connects to a local server, creates two nodes and an edge, queries the graph, and then disconnects.
library(AstraeaDB)
# 1. Connect to the server (convenience wrapper)
client <- astraea_connect()
# 2. Health check
client$ping()
# 3. Create nodes
alice_id <- client$create_node(
labels = c("Person"),
properties = list(name = "Alice", age = 30, city = "San Francisco")
)
bob_id <- client$create_node(
labels = c("Person"),
properties = list(name = "Bob", age = 25, city = "New York")
)
# 4. Create an edge
edge_id <- client$create_edge(
source = alice_id,
target = bob_id,
edge_type = "KNOWS",
properties = list(since = 2020),
weight = 0.9
)
# 5. Read a node back
node <- client$get_node(alice_id)
node$labels
#> [1] "Person"
node$properties$name
#> [1] "Alice"
# 6. Find neighbors
neighbors <- client$neighbors(alice_id, direction = "outgoing")
# 7. Run a GQL query
result <- client$query("MATCH (p:Person) RETURN p.name, p.city")
# 8. Disconnect when finished
client$disconnect()vignette("getting-started")) – Detailed walkthrough of all
CRUD operations, traversals, GQL queries, batch operations, and
data-frame integration.vignette("advanced-features")) – Vector search, hybrid
search, temporal queries, GraphRAG, Arrow Flight transport, and
authentication.?AstraeaClient, ?ArrowClient,
?UnifiedClient, or ?astraea_connect to access
the full API documentation.