Inizia subitoInizia gratis

Risoluzione di entità basata su grafo

Oh no! Anche con un prompt a prova di bomba, esempi few-shot e le dita incrociate, l'LLM ha comunque allucinato un personaggio chiamato Romeo Capulet e gli ha assegnato alcune battute nel database.

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

Per fortuna, puoi usare le relazioni nel knowledge graph per decidere se questo nodo è probabilmente un duplicato accidentale di un altro chiamato Romeo Montague.

L'istruzione Cypher similarity_cypher usa le relazioni MEMBER_OF e INTERACTS_WITH per costruire un punteggio di similarità arbitrario con le seguenti proprietà:

Condizione Cypher Modificatore punti
Una relazione MEMBER_OF verso la stessa famiglia af = bf +1
La stessa proprietà name a.name = b.name +2
Percentuale di personaggi con cui a e b interagiscono size(inCommon) / size(aInteractsWith) Moltiplicata per la percentuale di b con cui a interagisce

In base alla tua conoscenza del dominio, sai che un punteggio di 2 indica una forte correlazione.

Questo esercizio fa parte del corso

Graph RAG con LangChain e Neo4j

Visualizza corso

Istruzioni dell'esercizio

  • Interroga graph con la query Cypher (similarity_cypher) per calcolare i punteggi di similarità tra "romeo-capulet" e gli altri nodi dei personaggi.
  • Estrai "bId", "bFamily" e "score", in quest'ordine, da ogni row in results.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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['____'])
Modifica ed esegui il codice