Neo4j-grafdatabas för GraphRAG, installation, Cypher, vektorer och drift.
grafer, Cypher, vektorer och förstärkning av operationer.
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.

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
- Vektorsökning för kandidatnoder.
- Traversera för grannar, spårbarhet och begränsningar.
- 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.