Neo4j-grafdatabas för GraphRAG, installation, Cypher, vektorer och drift.

grafer, Cypher, vektorer och förstärkning av operationer.

Sidinnehåll

Neo4j är det verktyg du vänder dig till när relationerna är datan. Om din domän ser ut som en whiteboard med cirklar och pilar blir det smärtsamt att tvinga den in i tabeller.

Neo4j modellerar denna bild som en egenskapsgraf (property graph) och frågar den med Cypher.

Graf- och datainfrastruktur

Den här guiden täcker vad Neo4j används för, ACID-beteende, Neo4j jämfört med Amazon Neptune och TigerGraph (och liknande), GraphRAG med vektorindex, vägar för lokala och produktionsinstallationer, portar och neo4j.conf, samt Cypher- och Python-mönster att kopiera och klistra in.

För bredare kontext kring val av datainfrastruktur, se pelaren Datainfrastruktur för AI-system.

Vad används Neo4j för i produktionsgrafarbetsflöden

Neo4j är gjord för anknuten data där du behöver ställa anknutna frågor, upprepade gånger, under produktionsbegränsningar. Det är det direkta svaret på vad Neo4j används för i de flesta team.

Egenskapsgrafsmodell med noder, relationer och egenskaper

Neo4j använder egenskapsgrafsmodellen: noder representerar entiteter, relationer kopplar ihop noder, och båda kan ha egenskaper. Märken (labels) och relationstyper ger struktur utan att låsa dig in i ett spröda schema.

Du kan börja med en tunn modell, leverera värde och utveckla grafen när nya frågor dyker upp.

Cypher-gråforspråk för mönstermatchning utan “join-soppa”

Cypher är deklarativt och bygger på mönstermatchning. Du beskriver undergrafens former och låter planern utföra dem.

Om SQL handlar om mängder, handlar Cypher om undergrafer. Det spelar roll för mångtrippiga traversaler, sökvägsfrågor, rekommendationer, spårbarhet och frågor som “vem har påverkat vad via vilket system”.

Är Neo4j ACID-kompatibel och varför du bör bry dig

Är Neo4j ACID-kompatibel? Ja. Att skapa eller uppdatera relationer påverkar en sammanhängande struktur; databasen håller denna konsekvent vid fel och konkurrens.

Designa grafapplikationer kring starka transaktionsgarantier om du inte tvingas till något annat. Det gör felsökning och resonemang kring beteende mycket enklare än att antaga vag “eventuell konsistens”.

Neo4j jämfört med Amazon Neptune och TigerGraph: en jämförelse från en senioringenjör

En fråga om “Neo4j jämfört med X” handlar oftast om “Vilken ekosystem kommer vi leva i under flera år?”.

Kort, opartisk syn – om ingenjörstid, inte benchmark-lyx.

Produkt Kernmodell och frågestil Var den vinner Var den skaver
Neo4j Egenskapsgraf och Cypher Stark ergonomi för anknuten data, moget verktyg, graf plus vektorhämtning Grafmodellering är en färdighet du måste investera i
Amazon Neptune Hanterad graf på AWS (Gremlin, openCypher, SPARQL för RDF) AWS-centrerade kontrakt och drift Blandning av frågespråk kan kännas plattformsdrivet
TigerGraph GSQL och OpenCypher-relaterade mönster Analysliknande arbetsflöden och kompilerade frågetillvägagångssätt Annan mental modell; inte drop-in Cypher överallt
JanusGraph Fördelad graf med externa lagringsbackends Öppen källkod med pluggbara backends Du driver backend-stacken själv
ArangoDB Multimodell (dokument, nyckel-värde, graf) En databas för blandade former Grafdjup varierar jämfört med graf-först-motorer
Memgraph Egenskapsgraf, Cypher-kompatibel Strömning och arbetsflöden för ny data Motorbeteende skiljer sig; kompatibilitet är inte identitet

Vad du ska bestämma innan du väljer en grafdatabas

Välj frågespråk och driftmodell först.

Om ditt team vill ha Cypher och ett graf-först-arbetsflöde är Neo4j ett starkt standardval. Om du redan har Gremlin-erfarenhet kan Neptune eller JanusGraph passa. Om du vill ha en multimodell-lager kan ArangoDB minska antalet rörliga delar.

Var ärlig kring drift. “Vi kör en distribuerad lagringsbackend” är lätt att säga tills du blir väckt vid 03:00 på grund av kompaktering eller JVM-trängsel.

Neo4j för RAG och GraphRAG: vektorsökning plus grafkontext

Många RAG-stackar börjar som vektorsökning plus prompt. Det fungerar tills du behöver spårbarhet, entitetsupplösning, kontext över flera hopp eller entydighet – då riskerar du att bygga om en kunskapsgraf i applikationskoden.

Hur förbättrar GraphRAG retrieval augmented generation? Den använder grafen för att hämta strukturerad kontext – entiteter, relationer, närområden – som likhet ensam ofta missar, vilket hjälper förankring och tillförlitlighet.

Neo4j-vektorindex för likhetssökning på inbäddningar

Kan Neo4j göra vektorsökning för RAG? Ja. Neo4j stöder vektorindex för likhetssökning över inbäddningar (vanligtvis HNSW-liknande approximativ närmaste-närbo-sökning).

Vektorer hittar “ting som ser liknande ut”. De kodar inte själva “hur de relaterar” i din domän. Neo4j låter dig kombinera likhet med traversaler.

Användning av SEARCH-underklausulen för vektor-begränsad mönstermatchning

Neo4js SEARCH-underklausul låter dig begränsa ett Cypher MATCH-mönster med approximativa närmaste-närbo-täfflar från ett vektorindex. Det är den ergonomiska bro för hybridhämtning.

Praktiskt mönster: vektorhämtning för kandidater, sedan grafexpansion för kontext, filtrering och förklaring.

GraphRAG i Python med neo4j-graphrag

Neo4js neo4j-graphrag-paket för Python kopplar ihop en drivare, hämtare och LLM-gränssnitt i en GraphRAG-flöde. Du kan fortfarande använda externa vektorlagringar om du vill dela upp ansvarsområden.

Hur du installerar Neo4j lokalt och i produktion

Hur installerar du Neo4j lokalt? Välj alternativet som matchar din riskprofil.

Installera Neo4j med Docker för lokal utveckling

Docker är den snabbaste vägen till en upprepbar server.

# Minimal körning. Data sparas INTE mellan omstarter.
docker run \
  --restart always \
  --publish=7474:7474 --publish=7687:7687 \
  neo4j:5

För verkligt arbete, sätt ett initialt lösenord och montera ett data-volym.

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

Docker Compose för ett teamvänligt setup

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

Neo4j Desktop

Neo4j Desktop är starkt för prototyper och undervisning – projekt, GUI, lokala instanser. För CI och integrationstester vinner Docker oftast.

Linux, Windows eller macOS-servrar

För långkörande värdar, följ officiella OS-installationsvägar. Du kommer så småningom bry dig om tjänsthantering, loggar, minne, backups och uppgraderingar.

Neo4j AuraDB (hanterat)

Om du föredrar att leverera produkt framför att köra databaser, är AuraDB det hanterade molnalternativet för Neo4j.

Kubernetes med Helm

Om plattformen är Kubernetes, använd Helm-baserad deployment och exponera Bolt och HTTP genom tjänster. Deploya bara databaser på K8s om din organisation kan kör tillstånd tillförlitligt där.

Neo4j-konfigurationens grundläggande: portar, anslutningar och neo4j.conf

Inställningar finns i neo4j.conf (nyckel=värde, # kommentarer). Sträng validering hjälper att fånga stavfel innan du serverar trafik.

Standard Neo4j-portar och anslutningar

Vilka är standard Neo4j-portarna? Bolt 7687, HTTP 7474, HTTPS 7473 som standard. I produktion, exponera bara vad du behöver; ofta Bolt på ett privat nätverk och HTTP-gränssnitt begränsat.

Exempel på förbättring (anpassa IP och TLS till din miljö):

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

Transaktionsinställningar som begränsar oändlig skada

Användbara hävstångar i granskningar inkluderar db.transaction.timeout för omdömslösa frågor och db.transaction.concurrent.maximum för att undvika “thundering herds”.

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

Praktiska Cypher- och vektorindex-exempel för RAG

Skapa ett vektorindex och lagra inbäddningar

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

Vektorhämtning sedan grafexpansion

  1. Vektorsökning för kandidatnoder.
  2. Traversera för grannar, spårbarhet och begränsningar.
  3. Formatera kontext för LLM med tydliga gränser.

Exempel med SEARCH inuti MATCH (syntaxen kan variera något beroende på Neo4j-version – kolla handboken för din 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;

Minimal GraphRAG i 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", "lösenord"))

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="Hur gör jag likhetssökning i Neo4j?", retriever_config={"top_k": 5})
print(response.answer)

Verkliga användningsfall för Neo4j: bedrägeri, rekommendationer och kunskapsgrafer

Bedrägeridetektering och riskgrafer

Bedrägeri är sällan en enda rad. Det är mönster över konton, enheter, IP-adresser, affärsverksamheter, identiteter och tid. Grafer uttrycker närområden och mångtrippiga vägar utan tiowägiga join-labyrinter.

Rekommendationer med beteende och explicita relationer

Produktionsrekommendationer kombinerar poängsatta kandidater med lager, begränsningar, hierarkier och förklarbarhet. Grafer hjälper dig att returnera vägar som människor kan resonera kring.

Kunskapsgrafer för RAG och agenter

RAG behöver förankring; agenter behöver minne, spårbarhet och begränsningar. En kunskapsgraf lagrar entiteter, relationer, källor och inbäddningar i en modell – ett naturligt passform för GraphRAG.

När bör du välja Neo4j framför Amazon Neptune eller TigerGraph?

När bör du välja Neo4j framför Amazon Neptune eller TigerGraph? Välj Neo4j för en Cypher-först-graf och vektor + traversal i en produkt. Välj Neptune när AWS och Gremlin eller RDF stämmer överens med din organisation. Välj TigerGraph när GSQL och analysliknande arbetsflöden är huvudsatset.

Användbara länkar