Motivation
graphrag-rs includes ROGRAG, a retrieval strategy not yet ported (the Swift port so far covers the core hybrid pipeline plus Leiden + LightRAG). Adding it rounds out retrieval-strategy parity.
Scope
- Review ROGRAG in the upstream crate (automataIA/graphrag-rs) and port it as a self-contained Swift module under
Sources/GraphRAG/ROGRAG/, following the conventions established by the LightRAG module (own config struct, Sendable, deterministic offline behavior, real source grounding).
- Expose it from
GraphRAG via a factory (mirroring lightRAG()), gated on isBuilt.
- Unit tests + an offline end-to-end test.
Files (parallel-safe)
New Sources/GraphRAG/ROGRAG/, plus a factory method in Sources/GraphRAG/GraphRAG/Engine.swift. Largely isolated new module.
Acceptance criteria
- Faithful port of ROGRAG's structure; documented deviations (like the deterministic/weighted choices made for Leiden) called out in code.
- Deterministic offline; builds under Swift 6 strict concurrency.
- CI green.
Size
Largest of the follow-ups — best done on its own; independent of the others so it can run in parallel. Context: follow-up to PRs #2 / #3.
Motivation
graphrag-rsincludes ROGRAG, a retrieval strategy not yet ported (the Swift port so far covers the core hybrid pipeline plus Leiden + LightRAG). Adding it rounds out retrieval-strategy parity.Scope
Sources/GraphRAG/ROGRAG/, following the conventions established by the LightRAG module (own config struct,Sendable, deterministic offline behavior, real source grounding).GraphRAGvia a factory (mirroringlightRAG()), gated onisBuilt.Files (parallel-safe)
New
Sources/GraphRAG/ROGRAG/, plus a factory method inSources/GraphRAG/GraphRAG/Engine.swift. Largely isolated new module.Acceptance criteria
Size
Largest of the follow-ups — best done on its own; independent of the others so it can run in parallel. Context: follow-up to PRs #2 / #3.