Frequently Asked Questions

Product Information & Technical Concepts

What is FalkorDB and what makes it unique as a graph database?

FalkorDB is a high-performance graph database designed for managing complex relationships and enabling advanced AI applications. It stands out due to its use of GraphBLAS for sparse linear algebra, support for tensors (multi-dimensional matrices), and its ability to efficiently handle multi-edge scenarios and property graphs. These features enable real-time, interactive data analysis and advanced AI workflows. [Source]

How does FalkorDB represent graphs internally?

FalkorDB represents graphs using sparse matrices and tensors, leveraging the GraphBLAS API. Each node is assigned a unique ID, and edges are captured in matrices or tensors, allowing for efficient storage and traversal. The property graph model is supported, enabling multi-labeled nodes and multiple relationship types. [Source]

What is the role of GraphBLAS in FalkorDB?

GraphBLAS is a core API for sparse linear algebra used by FalkorDB to represent and traverse in-memory graphs. It allows for advanced operations like matrix multiplication, addition, and transpose, and supports custom semirings and user-defined data types. FalkorDB uses SuiteSparse:GraphBLAS for high performance and flexibility. [Source]

How does FalkorDB handle multiple edges between the same nodes?

FalkorDB extends its matrix model to include tensors, allowing it to represent multiple edges (multi-edges) between the same nodes. When multiple edges of the same type exist, the corresponding tensor entry becomes a vector, efficiently capturing all connections. This approach reduces memory overhead and supports complex relationship modeling. [Source]

What is a tensor in the context of FalkorDB?

In FalkorDB, a tensor is a three-dimensional matrix used to represent multiple edges between nodes. A tensor entry can be a scalar (single edge) or a vector (multiple edges), providing flexibility and efficient memory usage for complex graph structures. [Source]

How does FalkorDB support the property graph model?

FalkorDB supports the property graph model, allowing nodes to have multiple labels and edges to have different relationship types. This is implemented using sets of matrices and tensors to capture the full graph topology, enabling advanced queries and flexible schema design. [Source]

Can you provide an example of creating nodes and edges in FalkorDB?

Yes. Using Cypher, you can create two nodes and an edge as follows:
CREATE (:Person {name:'Arthur'}), (:Person {name:'Katy'})
To create an edge: MATCH (Arthur:Person {name:'Arthur'}), (Katy:Person {name:'Katy'}) CREATE (Arthur)-[:Text]->(Katy). This creates a 'Text' relationship from Arthur to Katy. [Source]

How does FalkorDB optimize memory usage when handling multi-edges?

FalkorDB only allocates vectors within tensors when multiple edges exist between the same nodes. If only a single edge exists, the tensor entry remains a scalar, minimizing memory overhead. Vectors are freed when only one edge remains, further optimizing resource usage. [Source]

How can you query for specific relationships in FalkorDB?

You can use Cypher queries to find nodes with specific relationships. For example, to find all Admins with outgoing 'Login' edges to Systems: MATCH (a:Admin)-[Login]->(s:System) RETURN a. This leverages label matrices and relationship tensors for efficient querying. [Source]

What are the benefits of using GraphBLAS for graph operations in FalkorDB?

GraphBLAS enables high performance, low memory footprint, and flexible graph operations in FalkorDB. It allows for mixing different matrix types, custom semirings, and efficient computation, resulting in fast query processing, low latency, and high throughput. [Source]

Who is the creator and lead architect of FalkorDB?

Roi Lipman is the CTO and lead architect of FalkorDB. He has over 20 years of database engineering experience and previously created RedisGraph, optimizing Cypher-based knowledge graph performance for enterprise-scale AI applications. [Source]

What programming languages is FalkorDB implemented in?

FalkorDB is implemented in C and Rust, which contributes to its high performance and low latency compared to competitors implemented in other languages. [Source]

Does FalkorDB support Cypher as a query language?

Yes, FalkorDB supports the Cypher query language, making it accessible for users familiar with graph databases and enabling advanced graph queries and analytics. [Source]

How does FalkorDB handle deletion of edges in multi-edge scenarios?

When an edge is deleted and only one edge remains between two nodes, FalkorDB frees the vector and reverts the tensor entry to a scalar, optimizing memory usage and maintaining efficient graph representation. [Source]

What is the advantage of using tensors over matrices for edge representation?

Tensors allow FalkorDB to efficiently represent multiple edges between the same nodes, supporting complex relationship modeling and reducing memory overhead compared to using multiple matrices or less flexible data structures. [Source]

How does FalkorDB mix different matrix types in computations?

FalkorDB, via GraphBLAS, can mix different matrix types (e.g., label matrices and relationship tensors) in computations using semirings like GxB_ANY_PAIR_BOOL, which focus on the presence of entries rather than their values, enabling flexible and efficient graph operations. [Source]

Where can I find more technical resources and documentation for FalkorDB?

You can access comprehensive technical documentation, API references, and guides at docs.falkordb.com. Additional resources include the GitHub Releases Page and technical blog posts on the FalkorDB website.

How can I get started with FalkorDB?

You can sign up for FalkorDB Cloud, try FalkorDB for free in the cloud or locally via Docker, or schedule a demo with the team. Comprehensive documentation and community support are available to help you get started quickly. [Source]

Features & Capabilities

What are the key features of FalkorDB?

Key features include support for 10,000+ multi-graphs (multi-tenancy), open-source licensing, linear scalability, ultra-low latency, GraphRAG and agent memory optimization, and flexible deployment options (cloud and on-prem). [Source]

Does FalkorDB support advanced AI use cases?

Yes, FalkorDB is optimized for advanced AI use cases such as GraphRAG, agent memory, and agentic AI applications. It enables intelligent agents and chatbots with real-time adaptability and personalized user experiences. [Source]

What integrations does FalkorDB offer?

FalkorDB integrates with frameworks such as Graphiti (by ZEP), g.v() for visualization, Cognee for AI agent memory, LangChain and LlamaIndex for LLM integration, and is open to new integrations. [Source]

Does FalkorDB provide an API?

Yes, FalkorDB provides a comprehensive API with references and guides available in the official documentation, supporting integration into developer workflows. [Source]

How does FalkorDB support multi-tenancy?

FalkorDB supports robust multi-tenancy, allowing over 10,000 multi-graphs (tenants) in a single deployment. Multi-tenancy is included in all plans, making it suitable for SaaS providers and enterprises with diverse user bases. [Source]

What deployment options are available for FalkorDB?

FalkorDB offers both cloud and on-premises deployment options, providing flexibility for different organizational needs and compliance requirements. [Source]

Is FalkorDB open source?

Yes, FalkorDB is open source, encouraging community collaboration and transparency. [Source]

What security and compliance certifications does FalkorDB have?

FalkorDB is SOC 2 Type II compliant, meeting rigorous standards for security, availability, processing integrity, confidentiality, and privacy. [Source]

Performance & Benchmarks

How does FalkorDB perform compared to other graph databases?

FalkorDB offers up to 496x faster latency and 6x better memory efficiency compared to competitors like Neo4j. It supports over 10,000 multi-graphs and is optimized for real-time, high-speed data analysis. [Source]

Where can I find FalkorDB's benchmark results?

FalkorDB's real-world performance metrics and comparisons are available on the benchmarks page and in detailed comparison articles such as FalkorDB vs. Neo4j.

What makes FalkorDB suitable for large-scale, high-dimensional data?

FalkorDB's memory efficiency, linear scalability, and support for multi-tenancy make it ideal for managing large-scale, high-dimensional datasets in enterprise and SaaS environments. [Source]

Use Cases & Benefits

What are the main use cases for FalkorDB?

Main use cases include Text2SQL (natural language to SQL), security graphs for CNAPP/CSPM/CIEM, GraphRAG, agentic AI and chatbots, fraud detection, and high-performance graph storage for complex relationships. [Source]

Who can benefit from using FalkorDB?

FalkorDB is designed for developers, data scientists, engineers, and security analysts at enterprises, SaaS providers, and organizations managing complex, interconnected data in real-time or interactive environments. [Source]

What business impact can customers expect from FalkorDB?

Customers can expect improved scalability, enhanced trust and reliability, reduced alert fatigue in cybersecurity, faster time-to-market, and support for advanced AI applications. [Source]

What pain points does FalkorDB address?

FalkorDB addresses pain points such as trust and reliability in LLM-based applications, scalability and data management, alert fatigue in cybersecurity, performance limitations of competitors, interactive data analysis, regulatory compliance, and agentic AI development. [Source]

Can you share customer success stories with FalkorDB?

Yes. AdaptX used FalkorDB to analyze clinical data, XR.Voyage overcame scalability challenges, and Virtuous AI built a high-performance, multi-modal data store for ethical AI development. See case studies for details.

What industries are represented in FalkorDB's case studies?

Industries include healthcare (AdaptX), media and entertainment (XR.Voyage), and artificial intelligence/ethical AI development (Virtuous AI). [Source]

Pricing & Plans

What pricing plans does FalkorDB offer?

FalkorDB offers four plans: FREE (for MVPs with community support), STARTUP (from /1GB/month, includes TLS and automated backups), PRO (from 0/8GB/month, includes cluster deployment and high availability), and ENTERPRISE (custom pricing with enterprise-grade features and 24/7 support). [Source]

What features are included in the PRO plan?

The PRO plan starts at 0/8GB/month and includes advanced features such as cluster deployment, high availability, and more. [Source]

Competition & Comparison

How does FalkorDB compare to Neo4j?

FalkorDB offers up to 496x faster latency, 6x better memory efficiency, flexible horizontal scaling, and includes multi-tenancy in all plans, whereas Neo4j provides multi-tenancy only in premium plans. [Source]

How does FalkorDB compare to AWS Neptune?

FalkorDB is open source, supports multi-tenancy, and provides better latency performance and memory efficiency compared to the proprietary AWS Neptune. [Source]

How does FalkorDB compare to TigerGraph and ArangoDB?

FalkorDB delivers faster latency, more efficient memory usage, and flexible horizontal scaling compared to TigerGraph and ArangoDB, making it a strong choice for performance-critical applications. [Source]

Support & Implementation

How long does it take to implement FalkorDB?

FalkorDB is built for rapid deployment, enabling teams to go from concept to enterprise-grade solutions in weeks, not months. [Source]

What support and training resources are available for FalkorDB?

FalkorDB provides comprehensive documentation, community support via Discord and GitHub Discussions, access to solution architects, and practical tutorials and blog posts. [Source]

What feedback have customers given about FalkorDB's ease of use?

Customers like AdaptX and 2Arrows have praised FalkorDB for its user-friendly interface, rapid access to insights, and superior performance compared to competitors. [Source]

FalkorDB Header Menu

Edges in FalkorDB

edges-in-falkordb-flowchart

GraphBLAS Tensors

GraphBLAS an API for Sparse Linear Algebra is at the core of FalkorDB,

It provides key elements for representing and traversing in memory graphs.

 

Specifically Sparse Matrices and a set of operations e.g. matrix multiplication, addition and transpose.

 

Although up front GraphBLAS is an API specification we’ve been using Professor Tim David’s highly performant implementation of the API, SuiteSparse:GraphBLAS which covers the entire API with additional extensions.

 

The API is extremely flexible and allows for advanced usages e.g. defining your custom semirings, binary & unary operations along with user defined data types and it all works nicely.

Graph Representation

To represent a directed graph using a matrix one could assign each node a unique incremental ID (starting with ID 0) assuming node i has an outgoing edge to node j
we could mark this connection in boolean matrix M[i, j] = True. In case edges are also associated with IDs (as FalkorDB does) M is a UINT64_T matrix and M[i, j] = Edge_ID.

Things get a bit more complex with FalkorDB as we follow the property graph model which allows for multi labeled nodes and different edges can be associated with different relationship types.

Therefore a set of different matrices are used to capture the entire graph topology. But for now let’s keep things simple and focus on a single M matrix.

Multi Edge

Consider a graph which models communication between people

e.g. Arthur sent a text to Katy or Robert phoned Jill.

 

(Arthur)-[Texted]->(Katy) (Robert)-[Phoned]->(Jill)

 

This is all well, but how should we capture a graph where multiple calls or texts had been sent between the same two entities? e.g. Arther texted Katy on multiple occasions.

As we all know a Boolean matrix entry can only represent one out of three distinct values: True, False or Empty.

Tensor

To address multiple connections between two entities we’ve extended the set of matrices supported by FalkorDB to include a tensor, now to be as accurate as I can a Tensor can have a variable number of dimensions: A one dimension tensor is a Vector, Two dimension tensor is a 2D matrix and a three dimension tensor the one used in FalkorDB can be thought of as a 2D matrix with vectors as its entries, I like to think of it as a 3D matrix.

 

FalkorDB treats tensors as an extension to its regular 2D sparse matrices and can consider a tensor as a simple sparse matrix, e.g. when checking if there’s a path connecting node I to node J.

 

Consider the following scenario starting with an empty graph.

 

Let’s create two entities:

Arthur and Katy, using Cypher (FalkorDB’s supported query language) we can create the two by issuing this query:

				
					CREATE (:Person {name:'Arthur'}), (:Person {name:'Katy'})
				
			

Now let’s create the first edge noting a text was sent by Arthur to Katy

				
					MATCH (Arthur:Person {name:'Arthur'}), (Katy:Person {name:'Katy'})
CREATE (Arthur)-[:Text]->(Katy)

				
			

At this point a new tensor `T` is created within our database capturing all edges of type Text and so T[0, 1] = 0 is set assuming Arthur’s and Katy’s internal IDs are 0 and 1 and the only edge in the graph is assigned internal ID 0.

 

Note up to this point no vectors had been created, the tensor T contains only scalars instead of vector(s), this is done to reduce memory overhead as vectors require additional allocations.

 

Now it’s time to introduce a second text message, we can just reissue the previous query.

graphblas-tensors-flowchart

By creating multiple edges of the same relationship-type between the same set of nodes T[0, 1] is not longer a scalar but a vector

T[0, 1] = V
Where V[0] True and V[1] = True

Assuming the two edges had been assigned internal IDs 0 and 1.

Similarly if we delete connections to a point where only a single edge connects Arthur and Katy the vector V would be freed and its only remaining entry would become a scalar entry.

Following our example graph

				
					MATCH (Arthur:Person {name:'Arthur'})-[e]->(Katy:Person {name:'Katy'})
WITH e LIMIT 1
DELETE e
				
			

We’ll be left with T[0, 1] = 1 where 1 is the remaining edge internal ID.

Tensors and Sparse matrices

As mentioned earlier tensors within FalkorDB can be treated as regular 2D matrices, the GraphBLAS type for a matrix is GrB_Matrix and so to demonstrate the flexibility of this API consider how one can find out which nodes labeled as Admin has an outgoing edge of relationship-type Login ?

				
					MATCH (a:Admin)-[Login]->(s:System) RETURN a
				
			

Assuming our graph describes Login connections between different types of users: Admin, Owner and Contributor to nodes of type System

I should mention that FalkorDB maintains a boolean sparse matrix for each label, L[i, i] = True if node with internal ID i is labeled as L.

To answer the above question all we need to compute is:

Expression: Admin * Login * System

  • Admin – being a label matrix noting all nodes in the graph labeled as Admin.
  • Login – a relationship tensor capturing all connections of type Login.
  • System – being a label matrix noting all nodes in the graph labeled as System.

 
To compute the expression we’re using a semiring (GxB_ANY_PAIR_BOOL) which doesn’t consider the actual values within the multiplied matrices, but only cares for their patterns, whether the entry i, j is present or not.

This allows for mixing different types of matrices when performing multiplication in addition to speeding the overall computation time.

Conclusion

GraphBAS is a powerful API and I would dare saying it’s the missing piece in the BLAS API enabling operating on sparse vectors and matrices with the additional flexibility of working with a variety of native matrix types in addition to user defined types and custom semirings.

FalkorDB had been using it at its core for both clear expressibility of different graph operations in the language of linear algebra but mostly due to its high performance and low memory footprint. Enabling us fast graph query processing which yields low latency and high throughput.

In case you’ve found this post interesting consider following our work on Github or try out FalkorDB.