Skip to content

Port ROGRAG retrieval strategy from graphrag-rs #10

Description

@ronaldmannak

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions