Neo4j is a graph database management system developed by Neo4j, Inc
.
The data elementsNeo4j
stores are nodes, edges connecting them, and attributes of nodes and edges. Described by its developers as an ACID-compliant transactional database with native graph storage and processing,Neo4j
is available in a non-open-source “community edition” licensed with a modification of the GNU General Public License, with online backup and high availability extensions licensed under a closed-source commercial license. Neo also licensesNeo4j
with these extensions under closed-source commercial terms.
This notebook shows how to use LLMs to provide a natural language interface to a graph database you can query with the Cypher
query language.
Cypher is a declarative graph query language that allows for expressive and efficient data querying in a property graph.
Neo4j
instance. One option is to create a free Neo4j database instance in their Aura cloud service. You can also run the database locally using the Neo4j Desktop application, or running a docker container.
You can run a local docker container by running the executing the following script:
top_k
parameter.
The default is 10.
return_intermediate_steps
parameter
return_direct
parameter
cypher_llm
and qa_llm
parameters to define different llms
include_types
or exclude_types
to ignore parts of the graph schema when generating Cypher statements.
validate_cypher
parameter to validate and correct relationship directions in generated Cypher statements
use_function_response
parameter to pass context from database results to an LLM as a tool/function output. This method improves the response accuracy and relevance of an answer as the LLM follows the provided context more closely.
You will need to use an LLM with native function calling support to use this feature.
function_response_system
to instruct the model on how to generate answers.
Note that qa_prompt
will have no effect when using use_function_response