RagLeap
ragleap-graph (Java) · release notes

ragleap-graph (Java) v0.2.0

ragleap-graph (Java) 0.2.0

Maven Central: io.github.antonyrag/ragleap-graph:0.2.0. The only required runtime dependency is jackson-databind; ragleap-rag is optional and only needed for the two adapters.

New since 0.1.0

  • LLM extraction (optional): entity and relation extraction through a small LlmClient interface, with ExtractionConfig (regex or llm, entity types, relation ontology, cross-chunk relations, deduplication). Regex extraction stays the default.
  • Entity deduplication (EntityDeduplicator), with a port of Python's difflib similarity.
  • upsertDocument now counts typed relations, runs the cross-chunk pass and merges near-duplicate entity names when configured.
  • GraphRetriever and GraphRetrievalConfig: hybrid (vector plus graph) or graph-only retrieval with chunk and graph-path citations; GraphSearch (implemented by GraphIndex) and VectorSearch interfaces.
  • Optional adapters over ragleap-rag: RagLeapGenerationClient (for LLM extraction) and RagLeapVectorSearch (for the vector side of retrieval).
  • One-time backfills (backfillUserIdDefaults, backfillCompositeKey, backfillCoOccursWithCompositeKey) and the schema migration runner (Migration, MigrationRunner, two registered migrations).

How it was verified

  • Compared with the real Python ragleap-graph 0.9.0 (pinned commit 226fa4d) by running the Python code against fakes that record every call: difflib similarity on 422 string pairs, 25 extraction-config cases, 59 entity and 42 relation extractor scenarios, 39 upsert-with-extraction scenarios (every Cypher statement and parameter, every model call), 24 backfill and 19 migration-runner scenarios, 28 retrieval scenarios and 21 retrieval-config cases. 27 deliberate breaks (mutation checks) across the new slices were each caught by the parity tests.
  • Release build: 129 tests, 0 failures, 31 skipped (parity tests need the Python-generated fixtures and live tests need a Neo4j server, so both skip in a plain build and in CI). Full local run with fixtures and a live Neo4j 5.26.29 Community: 129 tests, 0 failures, 0 skipped.
  • After release, the published jar was resolved from Maven Central in a clean project (this jar plus jackson only) and exercised against a live Neo4j: health check, upsert, backfill and graph-only retrieval.

Not live-verified

  • LLM extraction against any real model provider (no paid keys): tested with scripted model answers and a local fake OpenAI-style server only.
  • Any Neo4j other than 5.26.29 Community, single server (bookmarks are not passed along).
  • RagLeapVectorSearch.of(RagLeap) is not run against a live ragleap-rag facade; its conversion and error handling are tested with a stand-in.

Not ported yet

  • The Postgres audit writer (a no-op audit sink is the default).

Differences from Python

  • A model is reached through LlmClient instead of ragleap-rag ProviderConfig directly; extraction failures throw ExtractionException (its pythonType() names the Python exception raised in the same situation); results are records. Each pull request body lists its differences (#718, #722, #723, #743).
View on GitHub Package page All releases
← v0.1.0

Release notes mirrored from GitHub Releases.