goldenmatch-kg package drops it in as that
resolve stage wherever a framework exposes a seam.
This is an ER-stage swap, not “goldenmatch builds your graph”. You still run the rest
of your pipeline (extraction, relationship building, graph store). goldenmatch resolves
the entities, and ER-KG-Bench
measures how much better than each framework’s built-in default that is.
Install
neo4j-graphrag
A realGoldenMatchResolver that subclasses the library’s BasePropertySimilarityResolver
and overrides the resolution step, so goldenmatch decides which nodes merge and Neo4j
persists them. It replaces FuzzyMatchResolver as a true in-pipeline plugin.
LlamaIndex PropertyGraphIndex
LlamaIndex ships no fuzzy entity resolver (its default is exact name+label upsert), so goldenmatch is additive here: aGoldenMatchEntityResolver transform canonicalizes entity
names before upsert, so variant mentions collapse into one node.
Graphiti
Graphiti exposes no public resolver seam, so goldenmatch runs as a post-ingestion maintenance pass:propose_entity_merges re-resolves the graph’s existing entity nodes and
returns the duplicate groups its floor + LLM missed.
How the lift stays honest
The per-framework numbers above are read straight off the ER-KG-Bench board (each framework’s default ER row versus the goldenmatch row), not re-scored here. Each adapter is proven by a parity test against realdedupe_df plus an integration test that runs the
framework’s real code with the goldenmatch shim wired in. GraphRAG, mem0, LightRAG, and
Cognee have no clean resolver seam and are out of scope for v1.