okf-graphrag: an OKF consumer for hybrid vector + graph retrieval (Qdrant + Neo4j + LangGraph) #281
devanshif8
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Update: parser, Neo4j loader, Qdrant loader, and retrieval are now all built and tested end-to-end.
Repo: https://github.com/devanshif8/okf-graphrag
What this is :
A reference consumer implementation that ingests any OKF bundle into a Qdrant vector index and a Neo4j graph, so agents can do hybrid retrieval (dense vector search + graph traversal, fused with RRF) over OKF knowledge instead of loading files flat into context.
Status (updated)
Parser — tested against the full knowledge-catalog repo (129 files) and the ga4 sample bundle (14/14 parsed cleanly).
Neo4j loader — concepts as :Concept nodes, links as :LINKS_TO edges. Node ids are bundle-relative (not full filesystem paths), which turned out to matter: an early version produced duplicate nodes when the same bundle was loaded from a different working directory. Fixed and verified against a live database from two different directories.
Qdrant loader — embeds concept bodies with a local sentence-transformers model, ids match the Neo4j scheme so results join cleanly across stores.
Retrieval — plain Python (not LangGraph, in the end — the flow is one linear pass so a state machine wasn't needed) doing RRF fusion of vector search + graph expansion. Found and documented a real edge case: index files and structurally "central" nodes can outrank genuinely relevant results in the graph half, since RRF can't tell "well-connected" from "relevant." Partially addressed with degree damping; the residual bias (ties between structurally identical leaf nodes) is documented as a known limitation rather than papered over with weight-tuning.
Still open — my original questions:
Standalone repo vs. PR — still curious what's preferred for a consumer like this.
Trust-tier precedence (status vs. verified) — still an open question on my end.
Any other OKF graph-DB consumers I should be aware of? (Since asking, I've come across neo4j-okf and edu_effect-okf exploring similar
territory independently — worth a look if you're tracking the ecosystem.)
Full architecture diagram and design notes are in the README now.
All reactions