ruvector_attention_node/
lib.rs1#![deny(clippy::all)]
13
14use napi_derive::napi;
15
16pub mod attention;
17pub mod training;
18pub mod async_ops;
19pub mod graph;
20
21pub use attention::{
23 DotProductAttention,
24 MultiHeadAttention,
25 HyperbolicAttention,
26 FlashAttention,
27 LinearAttention,
28 LocalGlobalAttention,
29 MoEAttention,
30 MoEConfig,
31 AttentionConfig,
32};
33
34pub use training::{
36 InfoNCELoss,
37 LocalContrastiveLoss,
38 SpectralRegularization,
39 LossWithGradients,
40 SGDOptimizer,
41 AdamOptimizer,
42 AdamWOptimizer,
43 LearningRateScheduler,
44 TemperatureAnnealing,
45 DecayType,
46 CurriculumScheduler,
47 CurriculumStageConfig,
48 MiningStrategy,
49 HardNegativeMiner,
50 InBatchMiner,
51};
52
53pub use async_ops::{
55 BatchConfig,
56 BatchResult,
57 ParallelConfig,
58 AttentionType,
59 StreamProcessor,
60 BenchmarkResult,
61};
62
63pub use graph::{
65 EdgeFeaturedAttention,
66 EdgeFeaturedConfig,
67 GraphRoPEAttention,
68 RoPEConfig,
69 DualSpaceAttention,
70 DualSpaceConfig,
71};
72
73#[napi]
75pub fn version() -> String {
76 env!("CARGO_PKG_VERSION").to_string()
77}
78
79#[napi]
81pub fn info() -> LibraryInfo {
82 LibraryInfo {
83 name: "ruvector-attention-node".to_string(),
84 version: env!("CARGO_PKG_VERSION").to_string(),
85 description: "Node.js bindings for ruvector-attention".to_string(),
86 features: vec![
87 "scaled-dot-product".to_string(),
88 "multi-head".to_string(),
89 "hyperbolic".to_string(),
90 "flash".to_string(),
91 "linear".to_string(),
92 "local-global".to_string(),
93 "moe".to_string(),
94 "edge-featured".to_string(),
95 "graph-rope".to_string(),
96 "dual-space".to_string(),
97 "training".to_string(),
98 "async".to_string(),
99 "batch".to_string(),
100 "benchmark".to_string(),
101 ],
102 }
103}
104
105#[napi(object)]
107pub struct LibraryInfo {
108 pub name: String,
109 pub version: String,
110 pub description: String,
111 pub features: Vec<String>,
112}