ÎncepețiÎncepe gratuit

Rezoluția entităților bazată pe graf

Vai! Chiar și cu un prompt infailibil, exemple few-shot și degetele încrucișate, LLM-ul a halucinat un personaj pe nume Romeo Capulet și i-a atribuit câteva replici în baza de date.

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

Din fericire, poți folosi relațiile din graful de cunoștințe pentru a decide dacă acest nod este probabil un duplicat accidental al nodului Romeo Montague.

Instrucțiunea Cypher similarity_cypher folosește relațiile MEMBER_OF și INTERACTS_WITH pentru a calcula un scor de similaritate arbitrar, cu următoarele proprietăți:

Condiție Cypher Modificator de punctaj
Relație MEMBER_OF cu aceeași familie af = bf +1
Aceeași proprietate de nume a.name = b.name +2
Procentul de personaje cu care interacționează a și b size(inCommon) / size(aInteractsWith) Înmulțit cu procentul din b cu care interacționează a

Din cunoștințele tale despre domeniu, știi că un scor de 2 indică o corelație puternică.

Acest exercițiu face parte din cursul

Graph RAG cu LangChain și Neo4j

Vezi cursul

Instrucțiuni pentru exercițiu

  • Interoghează graph cu interogarea Cypher (similarity_cypher) pentru a calcula scorurile de similaritate dintre "romeo-capulet" și celelalte noduri de personaje.
  • Extrage "bId", "bFamily" și "score", în această ordine, din fiecare row din results.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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['____'])
Editează și rulează codul