Skip to content

neo4j-examples/langchain-starter-kit

Repository files navigation

Neo4j LangChain Starter Kit

This kit provides a simple FastAPI backend service connected to OpenAI and Neo4j for powering GenAI projects. The Neo4j interface leverages both Vector Indexes and Text2Cypher chains to provide more accurate results.

alt text

Requirements

Presumptions

For the vector portion of this kit to work, it presumes the following about the source data:

  • There are Nodes labeled 'Chunk' already within the database. This target label type can be changed within app/vector_chain.py file - line 49
  • Node records contain a 'text' property with the unstructured data of interest. This can be changed within the app/vector_chain.py file - line 52
  • Node records contain a 'sources' property. This is used by LangChain's RetrievalQAWithSourcesChain

Usage

Add a .env file to the root folder with the following keys and your own credentials (or these included public access only creds):

NEO4J_URI=neo4j+ssc://9fcf58c6.databases.neo4j.io
NEO4J_DATABASE=neo4j
NEO4J_USERNAME=public
NEO4J_PASSWORD=read_only
OPENAI_API_KEY=<your_openai_key_here>

Then run: poetry run uvicorn app.server:app --reload --port=8000

Or add env variables at runtime:

NEO4J_URI=neo4j+ssc://9fcf58c6.databases.neo4j.io \
NEO4J_DATABASE=neo4j \
NEO4J_USERNAME=public \
NEO4J_PASSWORD=read_only \
OPENAI_API_KEY=<add_your_openai_key_here> \
poetry run uvicorn app.server:app --reload --port=8000 --log-config=log_conf.yaml

NOTE the above Neo4j credentials are for read-only access to a hosted sample dataset. Your own OpenAI api key will be needed to run this server.

NOTE the NEO4J_URI value can use either the neo4j or bolt uri scheme. For more details on which to use, see this example

A FastAPI server should now be running on your local port 8000/api/chat.

Custom Database Setup

If you would like to load your own instance with a subset of this information. Add your own OpenAI key to the Cypher code in the edgar_import.cypher file and run it in your instance's Neo4j browser.

For more information on how this load script works, see this notebook.

Docs

FastAPI will make endpoint information and the ability to test from a browser at http://localhost:8000/docs

Testing

Alternatively, after the server is running, a curl command can be triggered to test the endpoint:

curl --location 'http://127.0.0.1:8000/api/chat' \
--header 'Content-Type: application/json' \
--data '{
    "message":"How many forms are there?"}'

Feedback

Please provide feedback and report bugs as GitHub issues

Contributing

Want to improve this kit? See the contributing guide

Learn More

At Neo4j GraphAcademy, we offer a wide range of courses completely free of charge, including Neo4j & LLM Fundamentals and Build a Neo4j-backed Chatbot using Python.