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
//! Pure-Rust GGUF model metadata loader and thread-safe model registry.
//!
//! This module is enabled by the `gguf-loader` Cargo feature.
//!
//! # Overview
//!
//! - [`GgufParser`] — reads the GGUF v2/v3 file header (magic, version,
//! key-value metadata, tensor shape/offset records) **without** loading
//! tensor weights into RAM.
//! - [`ModelRegistry`] — a thread-safe `RwLock`-protected store of
//! [`ModelInfo`] records indexed by name-based [`ModelHandle`]s.
//!
//! Together these components provide the "model loading strategy" required by
//! the LoRA phase-d fine-tuning scaffold: you can enumerate model architecture
//! metadata (embedding dimension, vocab size, layer count, …) before committing
//! to loading any weights, and the registry lets multiple threads share that
//! metadata safely.
//!
//! # Example
//!
//! ```rust
//! # #[cfg(feature = "gguf-loader")]
//! # {
//! use oxirs_graphrag::model_loader::{GgufParser, ModelRegistry};
//!
//! // Parse a minimal in-memory GGUF buffer (v3, 0 tensors, 0 kv entries):
//! let mut buf = Vec::new();
//! buf.extend_from_slice(&[0x47, 0x47, 0x55, 0x46]); // magic
//! buf.extend_from_slice(&3u32.to_le_bytes()); // version 3
//! buf.extend_from_slice(&0u64.to_le_bytes()); // n_tensors
//! buf.extend_from_slice(&0u64.to_le_bytes()); // n_kv
//!
//! let meta = GgufParser::parse_bytes(&buf).expect("parse ok");
//! assert_eq!(meta.version, 3);
//! assert_eq!(meta.n_tensors, 0);
//! assert_eq!(meta.total_params(), 0);
//!
//! let registry = ModelRegistry::new();
//! assert!(registry.is_empty());
//! # }
//! ```
pub use ;
pub use ;