Base de données graphique Neo4j pour GraphRAG, installation, Cypher, vecteurs, opérations.

Graphes, Cypher, vecteurs et durcissement des opérations.

Sommaire

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.

Infographie et infrastructure de données

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

  1. Recherche vectorielle pour les nœuds candidats.
  2. Parcourir les voisins, la traçabilité et les contraintes.
  3. 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.

Liens utiles