docling-graph vs edgextract
Documents to validated knowledge graphs: Docling parses, an LLM or VLM fills Pydantic schemas, and you get a directed NetworkX graph with provenance, Cypher/CSV export and HTML views. — versus — Markdown to knowledge graph with an ontology you write: a small local decision model answers closed yes/no questions per candidate, and your cutoff keeps, queues for review or drops each link.
Both produce validated graphs from documents; docling-graph has an LLM fill Pydantic schemas, edgextract replaces generation with per-link decisions and a review queue.
| docling-graph | edgextract | |
|---|---|---|
| Stars | 925 | 100 |
| Forks | 100 | 11 |
| Language | Python | TypeScript |
| License | MIT | Apache-2.0 |
| Last activity | 3 days ago | 7 days ago |
| Topics | knowledge-graphs, ocr | knowledge-graphs, decision-models |
| Curated connections | 7 | 4 |
docling-graph — the curator's take
Built for the domains where an approximate embedding is worthless — chemistry, finance, legal — because what you need is the exact edge between a compound and a reaction or an instrument and its dependency. Pydantic schemas make extraction validated rather than hopeful, template generation bootstraps those schemas from example documents or an OWL/RDFS ontology, the provenance ledger carries bounding-box geometry with no extra LLM calls, and graph fusion merges multiple graphs deterministically. Under the Linux Foundation AI & Data umbrella with the Docling project's engineering behind it. Caveats: you own the schema design, which is the actual work; VLM extraction needs the heavy `vlm` extra plus local GPU or a served model; and the output is a NetworkX graph you export, not a queryable graph database.
edgextract — the curator's take
Use it when a wrong edge in your graph costs more than a missing one — every link is a probability you threshold, uncertain ones go to a human queue, and nothing is free-form JSON. Runs fully local (tev1 via Ollama, or WebGPU in the browser through its Rust/WASM core). Small project (~100 stars) and it extracts only what your ontology allows; for open-ended extraction over messy corpora an LLM extractor covers more ground.