Skip to content

Add NebulaGraph Enterprise 5.0 Support for Episodic Memory#1054

Draft
wenhaocs wants to merge 4 commits intoMemMachine:mainfrom
wenhaocs:haowen/nebula5.0
Draft

Add NebulaGraph Enterprise 5.0 Support for Episodic Memory#1054
wenhaocs wants to merge 4 commits intoMemMachine:mainfrom
wenhaocs:haowen/nebula5.0

Conversation

@wenhaocs
Copy link

@wenhaocs wenhaocs commented Feb 5, 2026

Purpose of the change

This PR adds NebulaGraph Enterprise 5.2.0 as an alternative vector graph store backend for episodic memory, alongside the existing Neo4j support. Users can now choose between Neo4j and NebulaGraph based on their deployment and scalability needs.

Description

Motivation

  • Performance & Scalability: NebulaGraph is born for large scale graph scenario: large data, high QPS and low latency. It provides horizontal scalability for large-scale deployments (trillions of edges)
  • Standards Compliance: Uses GQL (ISO/IEC 76120), the standardized graph query language
  • Native Vector Support: Built-in VECTOR data type and high-performance vector indexes (IVF/HNSW)
  • Enterprise Features: LDAP, backup/restore, monitoring, and production-grade reliability

Core Implementation

  1. Add src/memmachine/common/vector_graph_store/nebula_graph_vector_graph_store.py which implements vector_graph_store.py

  2. Added NebulaGraphConf in src/memmachine/common/configuration/database_conf.py

  3. Added NebulaGraph client management to src/memmachine/common/resource_manager/database_manager.py

  4. Added nebula = ["nebula5-python>=5.0.0"] optional dependency

Fixes/Closes

Fixes #(issue number)

Type of change

[Please delete options that are not relevant.]

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactor (does not change functionality, e.g., code style improvements, linting)
  • Documentation update
  • Project Maintenance (updates to build scripts, CI, etc., that do not affect the main project)
  • Security (improves security without changing functionality)

How Has This Been Tested?

All Nebula related tests are base on a local Nebula cluster.

New Test Files:

  • tests/memmachine/common/vector_graph_store/test_nebula_graph_vector_graph_store.py
    • 12 integration tests

Enhanced Test Files:

  • tests/memmachine/episodic_memory/declarative_memory/test_declarative_memory.py
  • tests/memmachine/episodic_memory/long_term_memory/test_long_term_memory.py
  • Added parameterized fixtures for both Neo4j and NebulaGraph

[Please delete options that are not relevant.]

  • Unit Test
  • Integration Test
  • End-to-end Test
  • Test Script (please provide)
  • Manual verification (list step-by-step instructions)

Test Results: [Attach logs, screenshots, or relevant output]

Checklist

[Please delete options that are not relevant.]

  • I have signed the commit(s) within this pull request
  • My code follows the style guidelines of this project (See STYLE_GUIDE.md)
  • I have performed a self-review of my own code
  • I have commented my code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added unit tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings

Maintainer Checklist

  • Confirmed all checks passed
  • Contributor has signed the commit(s)
  • Reviewed the code
  • Run, Tested, and Verified the change(s) work as expected

Screenshots/Gifs

[If applicable, add screenshots or GIFs that show the changes in action. This is especially helpful for API responses. Otherwise, delete this section or type "N/A".]

Further comments

[Add any other relevant information here, such as potential side effects, future considerations, or any specific questions for the reviewer. Otherwise, type "None".]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant