Ga naar de hoofdinhoud
BVDNET
Arnhem · websites & automatiseringBVDNET
Praktische Toepassingen

Knowledge graph

Een knowledge graph slaat feiten op als een netwerk van dingen en hun relaties, zodat software de verbanden kan volgen; Google gebruikt er een voor zijn zoekresultaten.

Ook bekend als: kennisgraaf, KG, Google Knowledge Graph

Een knowledge graph (kennisgraaf) slaat feiten op als een netwerk: dingen als personen, bedrijven, producten en plaatsen, verbonden door benoemde relaties, bijvoorbeeld "Leonardo da Vinci schilderde de Mona Lisa". Software kan die verbindingen volgen om vragen te beantwoorden. De Knowledge Graph van Google levert de informatieblokken bij de zoekresultaten, ook het blok van een lokaal bedrijf met openingstijden en telefoonnummer.

Hoe ziet een knowledge graph eruit?

Hogan e.a. omschrijven een knowledge graph in hun overzichtsartikel als een graaf van gegevens die kennis over de echte wereld verzamelt en overdraagt: de knooppunten zijn entiteiten, de verbindingen relaties daartussen. In RDF, de W3C-standaard voor zulke grafen, is elk feit een triple van onderwerp, predicaat en object. Wikidata, een open knowledge graph die vrijwilligers bouwen, bewaart onder meer deze feiten over de Mona Lisa:

  • Mona Lisa, maker, Leonardo da Vinci
  • Mona Lisa, locatie, Louvre
  • Mona Lisa, datum van oprichting of creatie, 1503

Leonardo da Vinci heeft zelf ook feiten, dus een zoekopdracht kan de verbindingen verder volgen. In een property graph, het model achter grafendatabases als Neo4j, kunnen knooppunten en verbindingen ook eigenschappen hebben, zoals een datum. RDF-grafen bevraag je met SPARQL, property graphs met talen als Cypher.

Waar komt de term vandaan?

De term is ouder, maar Hogan e.a. herleiden de huidige betekenis tot de aankondiging van Google in mei 2012: zoeken moest dingen begrijpen in plaats van losse woorden ("things, not strings"). Bij de start bevatte de graaf van Google meer dan 500 miljoen objecten en 3,5 miljard feiten; in mei 2020 noemde Google meer dan 500 miljard feiten over vijf miljard entiteiten. Airbnb, Amazon, eBay, Facebook, LinkedIn, Microsoft en Uber volgden met een eigen knowledge graph.

Google noemt zijn informatieblokken kennisvensters. Lokale bedrijven beheren gegevens als openingstijden via het Google Bedrijfsprofiel, en gestructureerde gegevens voor organisaties op een homepage kunnen invloed hebben op het logo dat het kennisvenster toont.

Hoe bouw je een knowledge graph?

Gestructureerde gegevens, zoals een klantendatabase, kun je met vaste regels omzetten naar een graaf. Tekst kost meer werk. Hogan e.a. beschrijven drie stappen: named entity recognition vindt namen van personen, organisaties en plaatsen; entity linking koppelt elke naam aan het juiste knooppunt ("Rapa Nui" is Paaseiland); relatie-extractie zet wat de zin zegt om in verbindingen. Een groot taalmodel kan die extractie ook doen; GraphRAG bouwt zijn graaf op die manier.

Hoe werken knowledge graphs samen met taalmodellen?

Volgens Pan e.a. (2023) vullen de twee elkaar aan. Een taalmodel schiet vaak tekort in het vastleggen en terugvinden van feitenkennis; een knowledge graph slaat feiten expliciet op, maar is lastig te bouwen en bij te houden. Pan e.a. onderscheiden knowledge graphs die taalmodellen kennis aanreiken tijdens de training of bij het antwoorden, taalmodellen die helpen knowledge graphs te bouwen en te bevragen, en systemen waarin beide samenwerken. Feiten uit een graaf geven een model iets controleerbaars om zijn antwoord op te baseren (grounding).

Waar gaat het mis?

  • Gaten. Ontbrekende feiten leveren onvolledige zoekresultaten op, merken Hogan e.a. op: de graaf weet alleen wat iemand heeft ingevoerd of geëxtraheerd.
  • Verouderde of onjuiste feiten. Een correcte graaf raakt verouderd als niemand hem bijhoudt. Google schrijft dat er af en toe fouten in zijn Knowledge Graph sluipen en neemt meldingen aan via een feedbacklink bij elk kennisvenster.
  • Werk. Neo4j, dat een grafendatabase verkoopt, raadt aan klein te beginnen, met één concreet probleem.

Voorbeeld

Stel: een groothandel in bouwmaterialen houdt klanten, bestellingen, producten en leveranciers bij in een graaf. Een leverancier roept een partij pluggen terug. Eén zoekopdracht op de graaf volgt de verbindingen van leverancier naar producten naar bestellingen naar klanten en geeft de klanten die gebeld moeten worden. Een bestelling die nooit aan het product is gekoppeld, valt erbuiten.