Kom igångKom igång gratis

Grafbaserad entitetsupplösning

Nej då! Trots ett välformulerat prompt, few-shot-exempel och korsade fingrar har LLM:en ändå hittat på en karaktär vid namn Romeo Capulet och tilldelat honom några repliker i databasen.

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

Tur då att du kan använda relationerna i kunskapsgrafen för att avgöra om den här noden troligtvis är ett oavsiktligt duplikat av en annan nod med namnet Romeo Montague.

Cypher-satsen similarity_cypher använder relationerna MEMBER_OF och INTERACTS_WITH för att beräkna ett godtyckligt likhetspoäng med följande egenskaper:

Villkor Cypher Poängmodifierare
En MEMBER_OF-relation till samma familj af = bf +1
Samma name-egenskap a.name = b.name +2
Andel karaktärer som både a och b interagerar med size(inCommon) / size(aInteractsWith) Multipliceras med andelen av b som a interagerar med

Baserat på din domänkunskap vet du att ett poäng på 2 indikerar en stark korrelation.

Den här övningen är en del av kursen

Graph RAG med LangChain och Neo4j

Visa kurs

Övningsinstruktioner

  • Fråga graph med Cypher-frågan (similarity_cypher) för att beräkna likhetspoäng mellan "romeo-capulet" och de övriga karaktärsnoderna.
  • Extrahera "bId", "bFamily" och "score", i den ordningen, från varje row i results.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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['____'])
Redigera och kör kod