Zacznij terazZacznij za darmo

Rozwiązywanie konfliktów encji na podstawie grafu

O nie! Nawet z dopracowanym promptem, przykładami few-shot i odrobiną szczęścia, LLM nadal wygenerował halucynację — postać o imieniu Romeo Capulet, której przypisał kilka kwestii w bazie danych.

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

Na szczęście możesz wykorzystać relacje w grafie wiedzy, żeby ocenić, czy ten węzeł to prawdopodobnie przypadkowy duplikat węzła o nazwie Romeo Montague.

Instrukcja Cypher similarity_cypher korzysta z relacji MEMBER_OF i INTERACTS_WITH, aby wyliczyć arbitralny wynik podobieństwa na podstawie następujących reguł:

Warunek Cypher Modyfikator punktów
Relacja MEMBER_OF do tej samej rodziny af = bf +1
Taka sama właściwość name a.name = b.name +2
Odsetek postaci, z którymi a i b wchodzą w interakcje size(inCommon) / size(aInteractsWith) Pomnożony przez odsetek postaci b, z którymi a wchodzi w interakcje

Z wiedzy dziedzinowej wiesz, że wynik 2 wskazuje na silną korelację.

To ćwiczenie jest częścią kursu

Graph RAG z LangChain i Neo4j

Zobacz kurs

Instrukcje do ćwiczenia

  • Odpytaj graph za pomocą zapytania Cypher (similarity_cypher), aby wyliczyć wyniki podobieństwa między "romeo-capulet" a pozostałymi węzłami postaci.
  • Wyodrębnij "bId", "bFamily" oraz "score", w tej kolejności, z każdego wiersza row w results.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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['____'])
Edytuj i uruchom kod