CommencerCommencez gratuitement

Résolution d'entités basée sur le graphe

Oh non ! Même avec un prompt infaillible, des exemples few-shot et les doigts croisés, le LLM a tout de même halluciné un personnage nommé Romeo Capulet et lui a attribué quelques répliques dans la base de données.

{
  "id": "romeo-capulet",
  "name": "Romeo Capulet",
  "family": "Montague"
}

Heureusement, vous pouvez utiliser les relations du graphe de connaissances pour déterminer si ce nœud est probablement un doublon accidentel d'un autre nommé Romeo Montague.

La requête Cypher similarity_cypher utilise les relations MEMBER_OF et INTERACTS_WITH pour construire un score de similarité arbitraire avec les propriétés suivantes :

Condition Cypher Modificateur de points
Une relation MEMBER_OF vers la même famille af = bf +1
La même propriété de nom a.name = b.name +2
Pourcentage de personnages avec lesquels a et b interagissent size(inCommon) / size(aInteractsWith) Multiplié par le pourcentage de b avec lequel a interagit

D'après votre connaissance du domaine, vous savez qu'un score de 2 indique une forte corrélation.

Cet exercice fait partie du cours

<cours>Graph RAG avec LangChain et Neo4j</cours>
Voir le cours

Instructions de l’exercice

  • Interrogez graph avec la requête Cypher (similarity_cypher) pour calculer les scores de similarité entre "romeo-capulet" et les autres nœuds de personnages.
  • Extrayez, dans cet ordre, "bId", "bFamily" et "score" depuis chaque row dans results.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Query the graph with similarity_cypher
result = ____

# Extract and print the results
for row in result:
    print(row['____'], 'from', row['____'], 'has similarity score of ', row['____'])
Modifier et exécuter le code