pythonadvanced

Graph RAG with Neo4j and LangChain

Build a graph-based RAG system using Neo4j knowledge graph for complex relationship queries.

python
from langchain_community.graphs import Neo4jGraph
from langchain_openai import ChatOpenAI
from langchain.chains import GraphCypherQAChain

graph = Neo4jGraph(url='bolt://localhost:7687', username='neo4j', password='password')

# Populate with sample data
graph.query('''
MERGE (p:Person {name: 'Guido van Rossum'})
MERGE (l:Language {name: 'Python'})
MERGE (c:Company {name: 'Google'})
MERGE (p)-[:CREATED]->(l)
MERGE (p)-[:WORKED_AT]->(c)
''')

graph.refresh_schema()

llm   = ChatOpenAI(model='gpt-4o-mini', temperature=0)
chain = GraphCypherQAChain.from_llm(llm=llm, graph=graph, verbose=True, allow_dangerous_requests=True)

result = chain.invoke({'query': 'Who created Python and where did they work?'})
print(result['result'])

Use Cases

  • knowledge graph Q&A
  • entity relationships
  • complex RAG

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.