Neo4j-graafdatabase voor GraphRAG, installatie, Cypher, vectoren, Ops
Grafen, Cypher, vectoren en ops-hardening.
Neo4j is waar je naartoe grijpt wanneer de relaties de data zijn. Als je domein eruitziet als een whitebord met cirkels en pijlen, dan is het pijnlijk om dit in tabellen te dwingen.
Neo4j modelleert dat plaatje als een property graph (eigengraf) en queryt het met Cypher.

Deze gids dekt waar Neo4j voor wordt gebruikt, ACID-gedrag, Neo4j vs Amazon Neptune vs TigerGraph (en concurrenten), GraphRAG met vector-indexen, paden voor lokale en productie-installatie, poorten en neo4j.conf, en copy-paste patronen voor Cypher en Python.
Voor bredere context over keuzes in data-infrastructuur, zie de Data Infrastructure for AI Systems-hoofdstuk.
Waar wordt Neo4j voor gebruikt in productiewerklasten met grafen?
Neo4j is bedoeld voor verbonden data waarbij je herhaaldelijk verbonden vragen moet stellen, binnen productieve beperkingen. Dat is het directe antwoord op waar Neo4j voor wordt gebruikt in de meeste teams.
Property graph data model met nodes, relaties en eigenschappen
Neo4j gebruikt het property graph-model: nodes vertegenwoordigen entiteiten, relaties verbinden nodes, en beide kunnen eigenschappen hebben. Labels en relatietyperingen geven structuur zonder je vast te pinnen aan een breekbaar schema.
Je kunt beginnen met een dun model, waarde leveren, en de graaf laten evolueren naarmate nieuwe vragen ontstaan.
Cypher graafquerytaal voor patroonmatching zonder joinsoep
Cypher is declaratief en gebouwd rond patroonmatching. Je beschrijft de vormen van subgrafieën en laat de planner ze uitvoeren.
Als SQL gaat over sets, gaat Cypher over subgrafieën. Dat maakt uit voor multi-hop traversals, pad-query’s, aanbevelingen, herkomst en vragen zoals “wie heeft wat via welk systeem aangeraakt”.
Is Neo4j ACID-compliant en waarom moet je daar om geven?
Is Neo4j ACID-compliant? Ja. Het maken of updaten van relaties raakt de samenhangende structuur aan; de database behoudt dat consistent bij failures en concurrentie.
Ontwerp graf-apps rondom sterke transactiegaranties, tenzij je daartoe gedwongen wordt. Dat maakt debuggen en redeneren over gedrag veel makkelijker dan uit te gaan van vaag eventuele consistentie.
Neo4j vs Amazon Neptune vs TigerGraph: een vergelijking door een senior engineer
Een “Neo4j vs X”-vraag is meestal “In welk ecosysteem gaan we voor jaren leven?”.
Korte, opiniërende visie—over engineeringtijd, niet over benchmarkslides.
| Product | Kernmodel en query-stijl | Waar het wint | Waar het bijt |
|---|---|---|---|
| Neo4j | Property graph en Cypher | Sterke ergonomie voor verbonden data, volwassen tooling, graaf plus vector-retrieval | Graafmodelleren is een vaardigheid waarin je moet investeren |
| Amazon Neptune | Beheerde graaf op AWS (Gremlin, openCypher, SPARQL voor RDF) | AWS-gecentreerde contracten en operaties | Mix van querytalen kan platformgedreven aanvoelen |
| TigerGraph | GSQL en OpenCypher-gerelateerde patronen | Analytics-stijl werklasten en compiled query-aanpakken | Ander mentaal model; niet overal een drop-in Cypher |
| JanusGraph | Gedistribueerde graaf met externe opslagbackends | Open source met pluggable backends | Je beheert de backend-stack zelf |
| ArangoDB | Multi-model (documenten, KV, graaf) | Één database voor gemengde vormen | Diepgang van graaf varieert vergeleken met graaf-first engines |
| Memgraph | Property graph, Cypher-compatibel | Streaming en workflows met verse data | Enginegedrag verschilt; compatibiliteit is geen identiteit |
Wat moet je beslissen voordat je een graafdatabase kiest?
Kies eerst de querytaal en het operatiemodel.
Als je team Cypher wil en een graaf-first workflow, is Neo4j een sterke standaardkeuze. Als je al expertise hebt in Gremlin, kunnen Neptune of JanusGraph passen. Als je één multi-model store wilt, kan ArangoDB het aantal onderdelen verminderen.
Wees eerlijk over operaties. “We gaan een gedistribueerde opslagbackend draaien” is makkelijk te zeggen totdat je om 03:00 uur gepaged wordt over compaction of JVM-druk.
Neo4j voor RAG en GraphRAG: vectors Zoeken plus graafcontext
Veel RAG-stacks beginnen als vector search plus prompt. Dat werkt totdat je herkomst, entiteitsresolutie, multi-hop context of disambiguatie nodig hebt—dan riskeer je het herbouwen van een knowledge graph in applicatiecode.
Hoe verbetert GraphRAG Retrieval Augmented Generation? Het gebruikt de graaf om gestructureerde context te halen—entiteiten, relaties, buren—dat similariteit alleen vaak mist, wat helpt bij grounding (gronding) en betrouwbaarheid.
Neo4j vector index voor embedding similarity search
Kan Neo4j vector search doen voor RAG? Ja. Neo4j ondersteunt vector-indexen voor similariteit over embeddings (meestal HNSW-stijl benaderde nearest neighbour-zoektocht).
Vectoren vinden “dingen die er vergelijkbaar uitzien”. Ze coderen niet op zichzelf “hoe ze samenhangen” in je domein. Neo4j laat je similariteit combineren met traversals.
Gebruik van de SEARCH subclause voor vector-beperkte patroonmatching
De SEARCH subclause van Neo4j laat je een Cypher MATCH-patroon beperken met approximate nearest neighbour hits van een vector-index. Dat is de ergonomische brug voor hybride retrieval.
Praktisch patroon: vectorretrieval voor kandidaten, daarna graaf-expansie voor context, filters en uitleg.
GraphRAG in Python met neo4j-graphrag
Het neo4j-graphrag-pakket van Neo4j voor Python koppelt een driver, retriever en LLM-interface aan een GraphRAG-flow. Je kunt nog steeds externe vector-opslag gebruiken als je verantwoordelijkheden wilt splitsen.
Hoe installeer je Neo4j lokaal en in productie?
Hoe installeer je Neo4j lokaal? Pas de optie aan je risicoprofiel aan.
Installeer Neo4j met Docker voor lokale ontwikkeling
Docker is het snelste pad naar een reproduceerbare server.
# Minimale run. Data wordt NIET bewaard tussen herstarts.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
neo4j:5
Voor echt werk, stel een initieel wachtwoord in en mount een data-volume.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
--env NEO4J_AUTH=neo4j/jouw_wachtwoord \
--volume=$HOME/neo4j/data:/data \
neo4j:5
Docker Compose voor een teamvriendelijke setup
services:
neo4j:
image: neo4j:5
ports:
- "7474:7474"
- "7687:7687"
environment:
- NEO4J_AUTH=neo4j/jouw_wachtwoord
volumes:
- $HOME/neo4j/logs:/logs
- $HOME/neo4j/config:/config
- $HOME/neo4j/data:/data
- $HOME/neo4j/plugins:/plugins
restart: always
Neo4j Desktop
Neo4j Desktop is sterk voor prototyping en lesgeven—projecten, GUI, lokale instanties. Voor CI en integratietests wint Docker meestal.
Linux, Windows of macOS servers
Voor langlopende hosts, volg de officiële OS-installatiepaden. Je zult uiteindelijk om servicebeheer, logs, geheugen, back-ups en upgrades geven.
Neo4j AuraDB (beheerd)
Als je liever producten levert dan databases draait, is AuraDB de beheerde Neo4j-cloudoptie.
Kubernetes met Helm
Als het platform Kubernetes is, gebruik dan de Helm-based deployment en exposeer Bolt en HTTP via services. Draai alleen databases op K8s als je organisatie staat betrouwbaar daar kan draaien.
Neo4j configuratie essentieel: poorten, connectoren en neo4j.conf
Instellingen zitten in neo4j.conf (key=value, # commentaren). Strikte validatie helpt typos te vangen voordat je verkeer serveert.
Standaard Neo4j poorten en connectoren
Wat zijn de standaard Neo4j poorten? Bolt 7687, HTTP 7474, HTTPS 7473 als standaard. In productie, exposeer alleen wat je nodig hebt; vaak Bolt op een privaat netwerk en HTTP UI beperkt.
Voorbeeld van hardening (pas IP’s en TLS aan op je omgeving):
server.bolt.listen_address=10.0.1.10:7687
server.http.listen_address=127.0.0.1:7474
server.https.enabled=true
server.https.listen_address=10.0.1.10:7473
Transactiestellingen die onbeperkte schade beperken
Nuttige hendels in reviews zijn db.transaction.timeout voor weggevluchte query’s en db.transaction.concurrent.maximum om onstuimige menigten te voorkomen.
db.transaction.timeout=10s
db.transaction.concurrent.maximum=1000
Praktische Cypher en vector index voorbeelden voor RAG
Maak een vector index en sla embeddings op
CREATE VECTOR INDEX doc_embeddings
FOR (d:Document) ON (d.embedding)
OPTIONS {indexConfig: {
`vector.dimensions`: 1536,
`vector.similarity_function`: "cosine"
}};
Vector retrieval en daarna graaf-expansie
- Vector search voor kandidaat nodes.
- Traverse voor buren, herkomst en beperkingen.
- Formateer context voor de LLM met duidelijke grenzen.
Voorbeeld met SEARCH binnen MATCH (syntax kan iets variëren per Neo4j-versie—check de handleiding voor je serverversie):
MATCH (d:Document)
SEARCH d IN (
VECTOR INDEX doc_embeddings
FOR $queryEmbedding
LIMIT 10
) SCORE AS score
MATCH (d)-[:MENTIONS]->(e:Entity)
RETURN d.id AS doc_id, score, collect(distinct e.name) AS entities
ORDER BY score DESC
LIMIT 5;
Minimale GraphRAG in Python
from neo4j import GraphDatabase
from neo4j_graphrag.retrievers import VectorRetriever
from neo4j_graphrag.embeddings import OpenAIEmbeddings
from neo4j_graphrag.llm import OpenAILLM
from neo4j_graphrag.generation import GraphRAG
driver = GraphDatabase.driver("neo4j://localhost:7687", auth=("neo4j", "password"))
embedder = OpenAIEmbeddings(model="text-embedding-3-large")
retriever = VectorRetriever(driver, "doc_embeddings", embedder)
llm = OpenAILLM(model_name="gpt-4o", model_params={"temperature": 0})
rag = GraphRAG(retriever=retriever, llm=llm)
response = rag.search(query_text="Hoe doe ik similarity search in Neo4j?", retriever_config={"top_k": 5})
print(response.answer)
Real-world Neo4j gebruiksscenario’s: fraude, aanbevelingen en knowledge graphs
Fraudedetectie en risicografen
Fraude is zelden één rij. Het zijn patronen over accounts, apparaten, IP’s, merchants, identiteiten en tijd. Grafen drukken buren en multi-hop paden uit zonder tien-weg join-labyrinten.
Aanbevelingen met gedrag en expliciete relaties
Productieaanbevelingen combineren gescoorde kandidaten met inventaris, beperkingen, hiërarchieën en uitlegbaarheid. Grafen helpen je paden terug te geven waar mensen over kunnen redeneren.
Knowledge graphs voor RAG en agents
RAG heeft gronding nodig; agents hebben geheugen, herkomst en beperkingen nodig. Een knowledge graph slaat entiteiten, relaties, bronnen en embeddings op in één model—natuurlijke fit voor GraphRAG.
Wanneer moet je Neo4j kiezen boven Amazon Neptune of TigerGraph?
Wanneer moet je Neo4j kiezen boven Amazon Neptune of TigerGraph? Kies Neo4j voor een Cypher-first graaf en vector + traversal in één product. Kies Neptune wanneer AWS en Gremlin of RDF overeenkomen met je organisatie. Kies TigerGraph wanneer GSQL en analytics-stijl werklasten de primaire inzet zijn.