goldengraph
June 20, 2026 · View on GitHub
Build an own-your-KG knowledge graph from text:
text → LLM extraction → goldenmatch entity resolution → a durable, bi-temporal store.
Entity resolution is the differentiator — duplicate surface forms across documents collapse into one durable entity, the thing most GraphRAG frameworks do badly.
from goldengraph import ingest, OpenAIClient
from goldengraph_native import _native as gg
store = gg.PyStore() # durable bi-temporal store (SP2 engine)
llm = OpenAIClient() # or any object with .complete(prompt) -> str
ingest("Acme Inc, founded by ...", store, at=1, llm=llm)
snapshot = store.snapshot() # canonical JSON; persist + reopen later
view = store.as_of(valid_t=1, tx_t=1) # bi-temporal slice -> queryable graph
extract(text, llm)— text → typed entities + relationships (LLM).resolve(mentions)— goldenmatch's zero-configdedupe_df→ merged entities +:h1:record keys.ingest(text, store, *, at, llm)— the end-to-end path into the store.
Part of the goldengraph program.
The engine (goldengraph-native: store / query / communities) is pyo3-free Rust;
this package is the Python host pipeline. LLM access is provider-agnostic
(LLMClient protocol); an OpenAIClient ships behind the [openai] extra.
Scope: SP4b (this package) is the build path. Retrieval + synthesis + NL query (SP4c) and WASM/C surfaces (SP5) are separate slices.