Aan de slagBegin gratis

Grafgebaseerde entity resolution

O nee! Zelfs met een ijzersterke prompt, few-shotvoorbeelden en duimen draaien heeft de LLM alsnog een personage bij elkaar gehallucineerd met de naam Romeo Capulet, en hij heeft zelfs een paar regels in de database gekregen.

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

Gelukkig kun je de relaties in de kennisgrafiek gebruiken om te bepalen of deze node waarschijnlijk per ongeluk een duplicaat is van een andere met de naam Romeo Montague.

De Cypher-instructie similarity_cypher gebruikt de relaties MEMBER_OF en INTERACTS_WITH om een willekeurige similariteitsscore te bouwen met de volgende eigenschappen:

Voorwaarde Cypher Puntenmodifier
Een MEMBER_OF-relatie met dezelfde familie af = bf +1
Dezelfde name-eigenschap a.name = b.name +2
Percentage personages waarmee a en b interactie hebben size(inCommon) / size(aInteractsWith) Vermenigvuldigd met het percentage van b waarmee a interactie heeft

Op basis van je domeinkennis weet je dat een score van 2 wijst op een sterke correlatie.

Deze oefening maakt deel uit van de cursus

Graph RAG met LangChain en Neo4j

Bekijk cursus

Oefeninstructies

  • Voer de Cypher-query (similarity_cypher) uit op graph om similariteitsscores te berekenen tussen "romeo-capulet" en de andere personage-nodes.
  • Haal uit elke row in results achtereenvolgens "bId", "bFamily" en "score" op.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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['____'])
Code bewerken en uitvoeren