LoslegenKostenlos starten

Graphbasierte Entitätsauflösung

Oh nein! Selbst mit einer wasserdichten Prompt, Few-Shot-Beispielen und gedrückten Daumen hat das LLM immer noch eine Figur namens Romeo Capulet halluziniert und ihr ein paar Zeilen in der Datenbank zugewiesen.

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

Zum Glück kannst du die Beziehungen im Knowledge Graph nutzen, um zu entscheiden, ob dieser Knoten wahrscheinlich ein versehentlicher Duplikat eines anderen namens Romeo Montague ist.

Die Cypher-Anweisung similarity_cypher verwendet die Beziehungen MEMBER_OF und INTERACTS_WITH, um eine frei definierte Similarity-Score mit folgenden Eigenschaften zu berechnen:

Bedingung Cypher Punkte-Modifikator
Eine MEMBER_OF-Beziehung zur gleichen Familie af = bf +1
Dasselbe Namensattribut a.name = b.name +2
Prozentsatz der Figuren, mit denen a und b interagieren size(inCommon) / size(aInteractsWith) Multipliziert mit dem Prozentsatz von b, mit dem a interagiert

Aus deiner Domänenkenntnis weißt du, dass ein Score von 2 auf eine starke Korrelation hinweist.

Diese Übung ist Teil des Kurses

<Kurs>Graph RAG mit LangChain und Neo4j</Kurs>
Kurs ansehen

Übungsanweisungen

  • Führe auf graph die Cypher-Abfrage (similarity_cypher) aus, um Similarity-Scores zwischen "romeo-capulet" und den anderen Figuren-Knoten zu berechnen.
  • Extrahiere aus jeder row in results die Werte "bId", "bFamily" und "score" – in genau dieser Reihenfolge.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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['____'])
Code bearbeiten und ausführen