1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//! Persistence layer for GraphRAG knowledge graphs
//!
//! This module provides storage backends for persisting knowledge graphs to disk
//! and loading them back into memory for fast querying.
//!
//! ## Supported Formats
//!
//! - **Parquet**: Columnar format for entities, relationships, chunks (Apache Arrow ecosystem)
//! - **LanceDB**: Vector storage for embeddings (Lance columnar format)
//! - **JSON**: Human-readable backup format (already implemented in core)
//! - **GraphML**: Export format for visualization tools (already implemented in core)
//!
//! ## Architecture
//!
//! ```text
//! workspace/
//! ├── default/
//! │ ├── entities.parquet
//! │ ├── relationships.parquet
//! │ ├── chunks.parquet
//! │ ├── documents.parquet
//! │ ├── vectors.lance/
//! │ ├── graph.json
//! │ └── metadata.toml
//! └── project_a/
//! └── ...
//! ```
//!
//! ## Example
//!
//! ```no_run
//! use graphrag_core::{KnowledgeGraph, persistence::WorkspaceManager};
//!
//! # fn example() -> graphrag_core::Result<()> {
//! // Create workspace manager
//! let workspace = WorkspaceManager::new("./workspace")?;
//!
//! // Save graph to default workspace
//! let graph = KnowledgeGraph::new();
//! workspace.save_graph(&graph, "default")?;
//!
//! // Load graph from workspace
//! let loaded_graph = workspace.load_graph("default")?;
//! # Ok(())
//! # }
//! ```
use crateResult;
// Submodules
// Re-exports (workspace always available)
pub use ;
pub use ;
pub use ;
/// Persistence trait for knowledge graphs