Neo4j-Grafendatenbank für GraphRAG, Installation, Cypher, Vektoren, Operations

Graphen, Cypher, Vektoren und die Härtung von Operationen.

Inhaltsverzeichnis

Neo4j ist das Mittel der Wahl, wenn die Beziehungen die eigentlichen Daten sind. Wenn Ihr Domänenmodell wie eine Whiteboard-Zeichnung mit Kreisen und Pfeilen aussieht, ist die Zwangsumsetzung in Tabellen schmerzhaft.

Neo4j modelliert dieses Bild als Property Graph und abfragt es mit Cypher.

Graph und Dateninfrastruktur

Dieser Leitfaden behandelt Einsatzgebiete von Neo4j, ACID-Verhalten, Neo4j im Vergleich zu Amazon Neptune und TigerGraph (und gleichwertigen Systemen), GraphRAG mit Vektorindizes, Installationspfade für lokale und produktive Umgebungen, Ports und neo4j.conf sowie direkt kopierbare Cypher- und Python-Muster.

Für einen breiteren Kontext zu Entscheidungen bei der Dateninfrastruktur siehe den Bereich Dateninfrastruktur für KI-Systeme.

Wofür wird Neo4j in produktiven Graph-Workloads eingesetzt?

Neo4j ist für vernetzte Daten gedacht, bei denen Sie wiederholt Fragen stellen müssen, die diese Verbindungen betreffen, und zwar unter produktiven Randbedingungen. Das ist die direkte Antwort auf die Frage, wofür Neo4j in den meisten Teams eingesetzt wird.

Property-Graph-Datenmodell mit Knoten, Beziehungen und Eigenschaften

Neo4j nutzt das Property-Graph-Modell: Knoten repräsentieren Entitäten, Beziehungen verbinden Knoten, und beide können Eigenschaften besitzen. Labels und Beziehungstypen verleihen Struktur, ohne Sie zu einem spröden Schema zu zwingen.

Sie können mit einem schlanken Modell beginnen, Wert liefern und den Graphen weiterentwickeln, sobald neue Fragen auftauchen.

Cypher, die Graph-Abfragesprache für Mustererkennung ohne Joins

Cypher ist deklarativer Natur und um Mustererkennung herum aufgebaut. Sie beschreiben Subgraph-Formen und lassen den Planner diese ausführen.

Während es bei SQL um Mengen geht, geht es bei Cypher um Subgraphen. Das ist entscheidend für Multi-Hop-Traversierungen, Pfadabfragen, Empfehlungssysteme, Herkunftsbelege und Fragen der Art „wer hat was über welches System berührt".

Ist Neo4j ACID-konform und warum sollten Sie sich darum kümmern?

Ist Neo4j ACID-konform? Ja. Das Erstellen oder Aktualisieren von Beziehungen berührt eine kohärente Struktur; die Datenbank hält diese unter Fehlerszenarien und bei gleichzeitiger Nutzung konsistent.

Entwerfen Sie Graph-Anwendungen um starke transaktionale Garantien herum, es sei denn, Sie sind gezwungen, das Gegenteil zu tun. Das macht das Debugging und die Analyse des Verhaltens viel einfacher als das Annahmen über vage Eventual Consistency.

Neo4j vs. Amazon Neptune vs. TigerGraph: Ein Vergleich aus Sicht eines Senior Engineers

Eine Frage nach „Neo4j vs. X" ist meist eine Frage nach dem Ökosystem, in dem wir uns jahrelang aufhalten werden.

Kurze, opinionierte Ansicht – zum Thema Engineering-Aufwand, nicht zu Benchmark-Folien.

Produkt Kernmodell und Abfragestil Wo es glänzt Wo es beißt
Neo4j Property Graph und Cypher Starke Ergonomie für vernetzte Daten, ausgereifte Tools, Graph plus Vektor-Retrieval Graph-Modellierung ist eine Fähigkeit, in die Sie investieren müssen
Amazon Neptune Verwalteter Graph auf AWS (Gremlin, openCypher, SPARQL für RDF) AWS-zentrierte Verträge und Betriebsabläufe Die Mischung der Abfragesprachen kann sich plattformgetrieben anfühlen
TigerGraph GSQL und OpenCypher-bezogene Muster Analytik-orientierte Workloads und kompilierte Abfrageansätze Anderes mentaleres Modell; Cypher ist nicht überall ein Drop-in
JanusGraph Verteilter Graph mit externen Speicher-Backends Open Source mit einsteckbaren Backends Sie betreiben den Backend-Stack selbst
ArangoDB Multi-Modell (Dokumente, KV, Graph) Eine Datenbank für gemischte Formen Die Graph-Tiefe variiert im Vergleich zu graph-first Engines
Memgraph Property Graph, Cypher-kompatibel Streaming- und Fresh-Data-Workflows Engine-Verhalten unterscheidet sich; Kompatibilität ist keine Identität

Was Sie entscheiden sollten, bevor Sie eine Graph-Datenbank auswählen

Wählen Sie zuerst die Abfragesprache und das Betriebsmodell.

Wenn Ihr Team Cypher und einen graph-first Workflow wünscht, ist Neo4j eine starke Standardwahl. Wenn Sie bereits Gremlin-Expertise haben, können Neptune oder JanusGraph passen. Wenn Sie einen Multi-Model-Speicher wünschen, kann ArangoDB die beweglichen Teile reduzieren.

Seien Sie ehrlich bezüglich des Betriebs. „Wir werden einen verteilten Speicher-Backend betreiben" ist leicht zu sagen, bis Sie um 03:00 Uhr wegen Kompaktierungen oder JVM-Druck aufgeweckt werden.

Neo4j für RAG und GraphRAG: Vektorsuche plus Graph-Kontext

Viele RAG-Stacks beginnen als Vektorsuche plus Prompt. Das funktioniert, bis Sie Herkunftsbelege, Entitätsauflösung, Multi-Hop-Kontext oder Disambiguierung benötigen – dann riskieren Sie, einen Wissensgraphen im Anwendungscode neu zu bauen.

Wie verbessert GraphRAG das Retrieval-Augmented Generation? Es nutzt den Graphen, um strukturierten Kontext zu extrahieren – Entitäten, Beziehungen, Nachbarschaften –, den Ähnlichkeit allein oft verpasst, was beim Grounding und der Glaubwürdigkeit hilft.

Neo4j-Vektorindex für Ähnlichkeitssuche von Embeddings

Kann Neo4j Vektorsuche für RAG durchführen? Ja. Neo4j unterstützt Vektorindizes für Ähnlichkeitssuche über Embeddings (häufig HNSW-ähnliche Approximation des nächsten Nachbarn).

Vektoren finden „Dinge, die ähnlich aussehen". Sie kodifizieren allein nicht „wie sie in Ihrer Domäne zusammenhängen". Neo4j ermöglicht es Ihnen, Ähnlichkeit mit Traversierungen zu kombinieren.

Verwendung der SEARCH-Unterklausel für vektorbeschränkte Mustererkennung

Die SEARCH-Unterklausel von Neo4j ermöglicht es Ihnen, ein Cypher MATCH-Muster unter Verwendung von Approximations-Treffern aus einem Vektorindex zu beschränken. Das ist die ergonomische Brücke für hybrides Retrieval.

Praktisches Muster: Vektor-Retrieval für Kandidaten, dann Graph-Erweiterung für Kontext, Filter und Erklärung.

GraphRAG in Python mit neo4j-graphrag

Das neo4j-graphrag-Paket von Neo4j für Python verknüpft einen Treiber, einen Retriever und eine LLM-Schnittstelle in einen GraphRAG-Fluss. Sie können weiterhin externe Vektorspeicher verwenden, wenn Sie Verantwortlichkeiten aufteilen möchten.

So installieren Sie Neo4j lokal und in der Produktion

Wie installieren Sie Neo4j lokal? Passen Sie die Option an Ihr Risikoprofil an.

Installation von Neo4j mit Docker für die lokale Entwicklung

Docker ist der schnellste Weg zu einem wiederholbaren Server.

# Minimaler Lauf. Daten werden NICHT zwischen Neustarts persistiert.
docker run \
  --restart always \
  --publish=7474:7474 --publish=7687:7687 \
  neo4j:5

Für echte Arbeiten setzen Sie ein initialenes Passwort und mounten ein Datenvolumen.

docker run \
  --restart always \
  --publish=7474:7474 --publish=7687:7687 \
  --env NEO4J_AUTH=neo4j/Ihr_Passwort \
  --volume=$HOME/neo4j/data:/data \
  neo4j:5

Docker Compose für eine teamfreundliche Einrichtung

services:
  neo4j:
    image: neo4j:5
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4J_AUTH=neo4j/Ihr_Passwort
    volumes:
      - $HOME/neo4j/logs:/logs
      - $HOME/neo4j/config:/config
      - $HOME/neo4j/data:/data
      - $HOME/neo4j/plugins:/plugins
    restart: always

Neo4j Desktop

Neo4j Desktop ist stark für Prototyping und Lehre – Projekte, GUI, lokale Instanzen. Für CI und Integrationstests gewinnt meist Docker.

Linux-, Windows- oder macOS-Server

Für langlebige Hosts folgen Sie den offiziellen Betriebssystem-Installationspfaden. Sie werden sich irgendwann um Dienstmanagement, Logs, Speicher, Backups und Upgrades kümmern müssen.

Neo4j AuraDB (verwaltet)

Wenn Sie lieber Produkte liefern als Datenbanken betreiben, ist AuraDB die verwaltete Cloud-Option für Neo4j.

Kubernetes mit Helm

Wenn die Plattform Kubernetes ist, nutzen Sie die auf Helm basierende Bereitstellung und stellen Bolt und HTTP über Services bereit. Stellen Sie Datenbanken nur auf K8s bereit, wenn Ihre Organisation dort zuverlässig Zustand betreiben kann.

Neo4j-Konfiguration im Wesentlichen: Ports, Connectors und neo4j.conf

Einstellungen befinden sich in neo4j.conf (Schlüssel=Wert, # Kommentare). Strenge Validierung hilft, Tippfehler zu finden, bevor Sie Traffic bedienen.

Standard-Ports und Connectors von Neo4j

Was sind die Standard-Ports von Neo4j? Bolt 7687, HTTP 7474, HTTPS 7473 standardmäßig. In der Produktion stellen Sie nur das bereit, was Sie benötigen; oft Bolt auf einem privaten Netzwerk und die HTTP-Oberfläche eingeschränkt.

Beispiel für Härtung (passen Sie IPs und TLS an Ihre Umgebung an):

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

Transaktionseinstellungen, die unbegrenzten Schaden begrenzen

Nützliche Hebel in Reviews sind db.transaction.timeout für durchgehende Abfragen und db.transaction.concurrent.maximum, um „Thundering Herds" zu vermeiden.

db.transaction.timeout=10s
db.transaction.concurrent.maximum=1000

Praktische Cypher- und Vektorindex-Beispiele für RAG

Vektorindex erstellen und Embeddings speichern

CREATE VECTOR INDEX doc_embeddings
FOR (d:Document) ON (d.embedding)
OPTIONS {indexConfig: {
  `vector.dimensions`: 1536,
  `vector.similarity_function`: "cosine"
}};

Vektor-Retrieval und dann Graph-Erweiterung

  1. Vektorsuche für Kandidatenknoten.
  2. Traversierung für Nachbarn, Herkunftsbelege und Beschränkungen.
  3. Formatieren des Kontexts für das LLM mit klaren Grenzen.

Beispiel unter Verwendung von SEARCH innerhalb von MATCH (Syntax kann je nach Neo4j-Version leicht variieren – prüfen Sie das Handbuch für Ihre Serverversion):

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;

Minimaler 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="Wie führe ich eine Ähnlichkeitssuche in Neo4j durch?", retriever_config={"top_k": 5})
print(response.answer)

Neo4j-Einsatzfälle aus der Praxis: Betrugsaufdeckung, Empfehlungen und Wissensgraphen

Betrugsaufdeckung und Risikographen

Betrug ist selten eine einzelne Zeile. Es sind Muster über Konten, Geräte, IPs, Händler, Identitäten und die Zeit hinweg. Graphen drücken Nachbarschaften und Multi-Hop-Pfade aus, ohne zehn Wege Joins zu durchsuchen.

Empfehlungen mit Verhalten und expliziten Beziehungen

Produktive Empfehlungen kombinieren bewertete Kandidaten mit Bestand, Beschränkungen, Hierarchien und Erklärbarkeit. Graphen helfen Ihnen, Pfade zurückzugeben, über die Menschen nachdenken können.

Wissensgraphen für RAG und Agenten

RAG benötigt Grounding; Agenten benötigen Gedächtnis, Herkunftsbelege und Beschränkungen. Ein Wissensgraph speichert Entitäten, Beziehungen, Quellen und Embeddings in einem Modell – eine natürliche Passform für GraphRAG.

Wann sollten Sie Neo4j gegenüber Amazon Neptune oder TigerGraph wählen?

Wann sollten Sie Neo4j gegenüber Amazon Neptune oder TigerGraph wählen? Wählen Sie Neo4j für einen Cypher-first Graph und Vektor plus Traversierung in einem Produkt. Wählen Sie Neptune, wenn AWS und Gremlin oder RDF mit Ihrer Organisation übereinstimmen. Wählen Sie TigerGraph, wenn GSQL und analytikorientierte Workloads die primäre Wette sind.