Base de données graphique Neo4j pour GraphRAG, installation, Cypher, vecteurs, opérations.
Graphes, Cypher, vecteurs et durcissement des opérations.
Neo4j est la solution à laquelle on se tourne lorsque les relations sont les données. Si votre domaine ressemble à un tableau blanc rempli de cercles et de flèches, le forcer dans des tables est douloureux.
Neo4j modélise cette image sous forme de graphe à propriétés et l’interroge avec Cypher.

Ce guide couvre les cas d’utilisation de Neo4j, le comportement ACID, Neo4j vs Amazon Neptune vs TigerGraph (et leurs équivalents), GraphRAG avec des index vectoriels, les chemins d’installation locale et de production, les ports et neo4j.conf, ainsi que des modèles Cypher et Python prêts à copier-coller.
Pour un contexte plus large sur les choix d’infrastructure de données, consultez le pilier Infrastructure de données pour les systèmes d’IA.
À quoi Neo4j est-il utilisé dans les charges de travail graphiques de production
Neo4j est conçu pour les données connectées lorsque vous devez poser des questions connectées, de manière répétée, sous des contraintes de production. C’est la réponse directe à l’usage de Neo4j pour la plupart des équipes.
Modèle de données de graphe à propriétés avec nœuds, relations et propriétés
Neo4j utilise le modèle de graphe à propriétés : les nœuds représentent des entités, les relations relient les nœuds, et les deux peuvent avoir des propriétés. Les étiquettes et les types de relations offrent une structure sans vous enfermer dans un schéma fragile.
Vous pouvez commencer avec un modèle fin, livrer de la valeur et faire évoluer le graphe à mesure que de nouvelles questions apparaissent.
Langage de requête graphique Cypher pour la correspondance de motifs sans soupe de jointures
Cypher est déclaratif et construit autour de la correspondance de motifs. Vous décrivez des formes de sous-graphes et laissez le planificateur les exécuter.
Si SQL concerne les ensembles, Cypher concerne les sous-graphes. Cela a de l’importance pour le parcours multi-sauts, les requêtes de chemin, les recommandations, la traçabilité (provenance) et les questions du type « qui a touché quoi via quel système ».
Neo4j est-il conforme ACID et pourquoi vous devriez vous en soucier
Neo4j est-il conforme ACID ? Oui. La création ou la mise à jour de relations touche une structure cohérente ; la base de données maintient cette cohérence en cas de défaillance et de concurrence.
Concevez des applications graphiques autour de garanties transactionnelles fortes, sauf si vous y êtes contraint autrement. Cela rend le débogage et le raisonnement sur le comportement beaucoup plus faciles que de supposer une cohérence éventuelle vague.
Neo4j vs Amazon Neptune vs TigerGraph : comparaison d’ingénieur senior
Une question « Neo4j vs X » est généralement « Dans quel écosystème allons-nous vivre pendant des années ? ».
Avis court et tranché — sur le temps d’ingénierie, pas sur les diapositives de benchmark.
| Produit | Modèle principal et style de requête | Où il excelle | Où il pose problème |
|---|---|---|---|
| Neo4j | Graphe à propriétés et Cypher | Ergonomie forte pour les données connectées, outils matures, graphe plus récupération vectorielle | La modélisation graphique est une compétence dans laquelle vous devez investir |
| Amazon Neptune | Graphe géré sur AWS (Gremlin, openCypher, SPARQL pour RDF) | Contrats et opérations centrés sur AWS | Le mélange de langages de requête peut sembler dicté par la plateforme |
| TigerGraph | GSQL et motifs liés à OpenCypher | Charges de travail de style analytique et approches de requêtes compilées | Modèle mental différent ; pas de Cypher à la place de partout |
| JanusGraph | Graphe distribué avec backends de stockage externes | Open source avec backends interchangeables | Vous gérez la pile de backend |
| ArangoDB | Multi-modèle (documents, clé-valeur, graphe) | Une base de données pour des formes mélangées | La profondeur graphique varie par rapport aux moteurs d’abord graphiques |
| Memgraph | Graphe à propriétés, compatible Cypher | Flux de travail de streaming et de données fraîches | Le comportement du moteur diffère ; la compatibilité n’est pas une identité |
Que décider avant de choisir une base de données graphiques
Choisissez d’abord le langage de requête et le modèle d’exploitation.
Si votre équipe veut Cypher et un flux de travail centré sur le graphe, Neo4j est un défaut solide. Si vous avez déjà une expertise Gremlin, Neptune ou JanusGraph peuvent convenir. Si vous voulez un entrepôt multi-modèle unique, ArangoDB peut réduire les pièces mobiles.
Soyez honnête sur les opérations. « Nous allons exécuter un backend de stockage distribué » est facile à dire jusqu’à ce que vous soyez réveillé à 03h00 pour des compactions ou une pression sur la JVM.
Neo4j pour RAG et GraphRAG : recherche vectorielle plus contexte graphique
De nombreuses piles RAG commencent par une recherche vectorielle plus un prompt. Cela fonctionne jusqu’à ce que vous ayez besoin de traçabilité, de résolution d’entités, de contexte multi-sauts ou de désambiguïsation — alors vous risquez de reconstruire un graphe de connaissances dans le code applicatif.
Comment GraphRAG améliore-t-il la génération augmentée par récupération ? Il utilise le graphe pour extraire un contexte structuré — entités, relations, voisinages — que la similarité seule manque souvent, ce qui aide à l’ancrage et à la fiabilité.
Index vectoriel Neo4j pour la recherche de similarité d’incrustations
Neo4j peut-il faire de la recherche vectorielle pour RAG ? Oui. Neo4j prend en charge les index vectoriels pour la similarité sur les incrustations (recherche de voisins approximatifs HNSW).
Les vecteurs trouvent des « choses qui se ressemblent ». Ils n’encodent pas eux-mêmes « comment elles sont liées » dans votre domaine. Neo4j vous permet de combiner la similarité avec des parcours.
Utilisation de la sous-clause SEARCH pour la correspondance de motifs contrainte vectorielle
La sous-clause SEARCH de Neo4j permet de contraindre un motif MATCH Cypher en utilisant des résultats de voisins approximatifs d’un index vectoriel. C’est le pont ergonomique pour la récupération hybride.
Motif pratique : récupération vectorielle pour les candidats, puis expansion graphique pour le contexte, les filtres et l’explication.
GraphRAG en Python avec neo4j-graphrag
Le package neo4j-graphrag de Neo4j pour Python connecte un pilote, un récupérateur et une interface LLM dans un flux GraphRAG. Vous pouvez toujours utiliser des entrepôts vectoriels externes si vous souhaitez séparer les responsabilités.
Comment installer Neo4j localement et en production
Comment installez-vous Neo4j localement ? Correspondre l’option à votre profil de risque.
Installer Neo4j avec Docker pour le développement local
Docker est le chemin le plus rapide vers un serveur répétable.
# Exécution minimale. Les données NE SONT PAS persistées entre les redémarrages.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
neo4j:5
Pour un travail réel, définissez un mot de passe initial et montez un volume de données.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
--env NEO4J_AUTH=neo4j/votre_mot_de_passe \
--volume=$HOME/neo4j/data:/data \
neo4j:5
Docker Compose pour une configuration conviviale pour l’équipe
services:
neo4j:
image: neo4j:5
ports:
- "7474:7474"
- "7687:7687"
environment:
- NEO4J_AUTH=neo4j/votre_mot_de_passe
volumes:
- $HOME/neo4j/logs:/logs
- $HOME/neo4j/config:/config
- $HOME/neo4j/data:/data
- $HOME/neo4j/plugins:/plugins
restart: always
Neo4j Desktop
Neo4j Desktop est excellent pour le prototypage et l’enseignement — projets, interface graphique, instances locales. Pour les tests CI et d’intégration, Docker gagne généralement.
Serveurs Linux, Windows ou macOS
Pour les hôtes à long terme, suivez les chemins d’installation officiels du système d’exploitation. Vous finirez par vous soucier de la gestion des services, des journaux, de la mémoire, des sauvegardes et des mises à jour.
Neo4j AuraDB (géré)
Si vous préférez livrer un produit à gérer des bases de données, AuraDB est l’option cloud gérée Neo4j.
Kubernetes avec Helm
Si la plateforme est Kubernetes, utilisez le déploiement basé sur Helm et exposez Bolt et HTTP via des services. Ne déployez des bases de données sur K8s que si votre organisation peut y exécuter l’état de manière fiable.
Essentiels de configuration Neo4j : ports, connecteurs et neo4j.conf
Les paramètres vivent dans neo4j.conf (clé=valeur, commentaires #). La validation stricte aide à attraper les fautes de frappe avant de servir du trafic.
Ports et connecteurs par défaut de Neo4j
Quels sont les ports Neo4j par défaut ? Bolt 7687, HTTP 7474, HTTPS 7473 par défaut. En production, n’exposez que ce dont vous avez besoin ; souvent Bolt sur un réseau privé et l’interface HTTP restreinte.
Exemple de durcissement (adaptez les IP et le TLS à votre environnement) :
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
Paramètres de transaction qui limitent les dommages non bornés
Les leviers utiles dans les revues incluent db.transaction.timeout pour les requêtes incontrôlées et db.transaction.concurrent.maximum pour éviter les troupeaux tonitruants.
db.transaction.timeout=10s
db.transaction.concurrent.maximum=1000
Exemples pratiques de Cypher et d’index vectoriels pour RAG
Créer un index vectoriel et stocker des incrustations
CREATE VECTOR INDEX doc_embeddings
FOR (d:Document) ON (d.embedding)
OPTIONS {indexConfig: {
`vector.dimensions`: 1536,
`vector.similarity_function`: "cosine"
}};
Récupération vectorielle puis expansion graphique
- Recherche vectorielle pour les nœuds candidats.
- Parcourir les voisins, la traçabilité et les contraintes.
- Formater le contexte pour le LLM avec des limites claires.
Exemple utilisant SEARCH à l’intérieur de MATCH (la syntaxe peut varier légèrement selon la version de Neo4j — consultez le manuel pour votre version de serveur) :
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;
GraphRAG minimal en 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="Comment faire une recherche de similarité dans Neo4j ?", retriever_config={"top_k": 5})
print(response.answer)
Cas d’utilisation réels de Neo4j : fraude, recommandations et graphes de connaissances
Détection de fraude et graphes de risque
La fraude est rarement une seule ligne. Ce sont des motifs à travers les comptes, les appareils, les IP, les commerçants, les identités et le temps. Les graphes expriment les voisinages et les chemins multi-sauts sans labyrinthes de jointures à dix voies.
Recommandations avec comportement et relations explicites
Les recommandations de production combinent des candidats notés avec l’inventaire, les contraintes, les hiérarchies et l’explicabilité. Les graphes vous aident à retourner des chemins sur lesquels les gens peuvent raisonner.
Graphes de connaissances pour RAG et agents
RAG a besoin d’ancrage ; les agents ont besoin de mémoire, de traçabilité et de contraintes. Un graphe de connaissances stocke les entités, les relations, les sources et les incrustations dans un seul modèle — un ajustement naturel pour GraphRAG.
Quand devriez-vous choisir Neo4j plutôt qu’Amazon Neptune ou TigerGraph ?
Quand devriez-vous choisir Neo4j plutôt qu’Amazon Neptune ou TigerGraph ? Choisissez Neo4j pour un graphe axé sur Cypher et vecteur + parcours dans un seul produit. Choisissez Neptune lorsque AWS et Gremlin ou RDF s’alignent avec votre organisation. Choisissez TigerGraph lorsque GSQL et les charges de travail de style analytique sont le pari principal.