Documentation Index Fetch the complete documentation index at: https://docs.helix-db.com/llms.txt
Use this file to discover all available pages before exploring further.
HelixQL is deprecated in HelixDB v2. Queries are now written with the Rust DSL and dispatched as JSON — see the Querying guide. This section is kept as a reference for legacy HelixQL projects.
For the complete documentation index optimized for AI agents, see llms.txt .
The Idea
When you have an edge, you can traverse to its connected endpoints. Use ::FromN or ::FromV to get the source node or vector, and ::ToN or ::ToV to get the destination node or vector.
::FromN Source Node
Return the node that the edge originates from.
Example 1: Getting the user from a document creation edge
QUERY GetCreatorFromEdge (creation_id: ID) =>
creator <- E<Creates>(creation_id)::FromN
RETURN creator
QUERY CreateUser (name: String, email: String) =>
user <- AddN<User>({
name: name,
email: email,
})
RETURN user
QUERY CreateDocument (user_id: ID, content: String, vector: [F64]) =>
document <- AddV<Document>(vector, {
content: content
})
creation_edge <- AddE<Creates>::From(user_id)::To(document)
RETURN creation_edge
See all 18 lines
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
alice = client.query( "CreateUser" , { "name" : "Alice" , "email" : "alice@example.com" })
alice_id = alice[ 0 ][ "user" ][ "id" ]
creation = client.query( "CreateDocument" , {
"user_id" : alice_id,
"content" : "This is my first document" ,
"vector" : [ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 ],
})
creation_id = creation[ 0 ][ "creation_edge" ][ "id" ]
result = client.query( "GetCreatorFromEdge" , {
"creation_id" : creation_id,
})
print (result)
See all 18 lines
::FromV Source Vector
Return the vector that the edge originates from.
Example 1: Getting the source document from a mentions edge
QUERY GetMentionSource (mention_id: ID) =>
source_doc <- E<MentionsUser>(mention_id)::FromV
RETURN source_doc
QUERY CreateUser (name: String, email: String) =>
user <- AddN<User>({
name: name,
email: email,
})
RETURN user
QUERY CreateDocument (content: String, vector: [F64]) =>
document <- AddV<Document>(vector, {
content: content
})
RETURN document
QUERY LinkMention (document_id: ID, user_id: ID) =>
mention_edge <- AddE<MentionsUser>::From(document_id)::To(user_id)
RETURN mention_edge
See all 21 lines
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
alice = client.query( "CreateUser" , { "name" : "Alice" , "email" : "alice@example.com" })
alice_id = alice[ 0 ][ "user" ][ "id" ]
document = client.query( "CreateDocument" , {
"content" : "This document mentions @alice" ,
"vector" : [ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 ],
})
document_id = document[ 0 ][ "document" ][ "id" ]
mention = client.query( "LinkMention" , {
"document_id" : document_id,
"user_id" : alice_id,
})
mention_id = mention[ 0 ][ "mention_edge" ][ "id" ]
source = client.query( "GetMentionSource" , {
"mention_id" : mention_id,
})
print (source)
See all 23 lines
::ToN Destination Node
Return the node that the edge points to.
Example 1: Getting the followed user from a follow edge
QUERY GetFollowedUser (follow_id: ID) =>
followed_user <- E<Follows>(follow_id)::ToN
RETURN followed_user
QUERY CreateUser (name: String, email: String) =>
user <- AddN<User>({
name: name,
email: email,
})
RETURN user
QUERY FollowUser (follower_id: ID, followed_id: ID, since: String) =>
follow_edge <- AddE<Follows>::From(follower_id)::To(followed_id)
RETURN follow_edge
See all 15 lines
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
from datetime import datetime
client = Client( local = True , port = 6969 )
alice = client.query( "CreateUser" , { "name" : "Alice" , "email" : "alice@example.com" })
alice_id = alice[ 0 ][ "user" ][ "id" ]
bob = client.query( "CreateUser" , { "name" : "Bob" , "email" : "bob@example.com" })
bob_id = bob[ 0 ][ "user" ][ "id" ]
since_value = datetime.now().isoformat()
follow = client.query( "FollowUser" , {
"follower_id" : alice_id,
"followed_id" : bob_id,
"since" : since_value,
})
follow_id = follow[ 0 ][ "follow_edge" ][ "id" ]
followed_user = client.query( "GetFollowedUser" , {
"follow_id" : follow_id,
})
print (followed_user)
See all 24 lines
::ToV Destination Vector
Return the vector that the edge points to.
Example 1: Inspecting the document vector
QUERY GetDocumentVector (creation_id: ID) =>
document_vector <- E<Creates>(creation_id)::ToV
RETURN document_vector
QUERY CreateUser (name: String, email: String) =>
user <- AddN<User>({
name: name,
email: email,
})
RETURN user
QUERY CreateDocument (user_id: ID, content: String, vector: [F64]) =>
document <- AddV<Document>(vector, {
content: content
})
creation_edge <- AddE<Creates>::From(user_id)::To(document)
RETURN creation_edge
See all 18 lines
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
alice = client.query( "CreateUser" , { "name" : "Alice" , "email" : "alice@example.com" })
alice_id = alice[ 0 ][ "user" ][ "id" ]
creation = client.query( "CreateDocument" , {
"user_id" : alice_id,
"content" : "This is my first document" ,
"vector" : [ 0.1 , 0.2 , 0.3 , 0.4 , 0.5 ],
})
creation_id = creation[ 0 ][ "creation_edge" ][ "id" ]
vector = client.query( "GetDocumentVector" , {
"creation_id" : creation_id,
})
print (vector)
See all 18 lines