Začněte nyníZačněte zdarma

Rozlišování entit pomocí grafu

Ale ne! I přes pečlivě sestavený prompt, few-shot příklady a zkřížené prsty si LLM vymyslel postavu jménem Romeo Capulet a přiřadil mu v databázi několik replik.

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

Naštěstí můžeš využít vztahy ve znalostním grafu k tomu, aby ses rozhodl/a, jestli je tento uzel pravděpodobně duplicitou uzlu s názvem Romeo Montague.

Cypherův příkaz similarity_cypher využívá vztahy MEMBER_OF a INTERACTS_WITH k výpočtu libovolného skóre podobnosti s těmito vlastnostmi:

Podmínka Cypher Modifikátor bodů
Vztah MEMBER_OF ke stejné rodině af = bf +1
Stejná vlastnost name a.name = b.name +2
Procento postav, se kterými interagují a i b size(inCommon) / size(aInteractsWith) Vynásobeno procentem b, se kterým interaguje a

Z kontextu domény víš, že skóre 2 značí silnou korelaci.

Toto cvičení je součástí kurzu

Graph RAG s LangChain a Neo4j

Zobrazit kurz

Pokyny k cvičení

  • Dotaž se na graph pomocí Cypherova dotazu (similarity_cypher) a vypočítej skóre podobnosti mezi "romeo-capulet" a ostatními uzly postav.
  • Z každého row ve results extrahuj hodnoty "bId", "bFamily" a "score", v tomto pořadí.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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['____'])
Upravit a spustit kód