tasq/node_modules/@ruvector/gnn/index.d.ts

193 lines
5.8 KiB
TypeScript

/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
/** Compression level for tensor compression */
export interface CompressionLevelConfig {
/** Type of compression: "none", "half", "pq8", "pq4", "binary" */
levelType: string
/** Scale factor (for "half" compression) */
scale?: number
/** Number of subvectors (for PQ compression) */
subvectors?: number
/** Number of centroids (for PQ8) */
centroids?: number
/** Outlier threshold (for PQ4) */
outlierThreshold?: number
/** Binary threshold (for binary compression) */
threshold?: number
}
/** Result from differentiable search */
export interface SearchResult {
/** Indices of top-k candidates */
indices: Array<number>
/** Soft weights for top-k candidates */
weights: Array<number>
}
/**
* Differentiable search using soft attention mechanism
*
* # Arguments
* * `query` - The query vector
* * `candidate_embeddings` - List of candidate embedding vectors
* * `k` - Number of top results to return
* * `temperature` - Temperature for softmax (lower = sharper, higher = smoother)
*
* # Returns
* Search result with indices and soft weights
*
* # Example
* ```javascript
* const query = [1.0, 0.0, 0.0];
* const candidates = [[1.0, 0.0, 0.0], [0.9, 0.1, 0.0], [0.0, 1.0, 0.0]];
* const result = differentiableSearch(query, candidates, 2, 1.0);
* console.log(result.indices); // [0, 1]
* console.log(result.weights); // [0.x, 0.y]
* ```
*/
export declare function differentiableSearch(query: Array<number>, candidateEmbeddings: Array<Array<number>>, k: number, temperature: number): SearchResult
/**
* Hierarchical forward pass through GNN layers
*
* # Arguments
* * `query` - The query vector
* * `layer_embeddings` - Embeddings organized by layer
* * `gnn_layers_json` - JSON array of serialized GNN layers
*
* # Returns
* Final embedding after hierarchical processing
*
* # Example
* ```javascript
* const query = [1.0, 0.0];
* const layerEmbeddings = [[[1.0, 0.0], [0.0, 1.0]]];
* const layer1 = new RuvectorLayer(2, 2, 1, 0.0);
* const layers = [layer1.toJson()];
* const result = hierarchicalForward(query, layerEmbeddings, layers);
* ```
*/
export declare function hierarchicalForward(query: Array<number>, layerEmbeddings: Array<Array<Array<number>>>, gnnLayersJson: Array<string>): Array<number>
/**
* Get the compression level that would be selected for a given access frequency
*
* # Arguments
* * `access_freq` - Access frequency in range [0.0, 1.0]
*
* # Returns
* String describing the compression level: "none", "half", "pq8", "pq4", or "binary"
*
* # Example
* ```javascript
* const level = getCompressionLevel(0.9); // "none" (hot data)
* const level2 = getCompressionLevel(0.5); // "half" (warm data)
* ```
*/
export declare function getCompressionLevel(accessFreq: number): string
/** Module initialization */
export declare function init(): string
/** Graph Neural Network layer for HNSW topology */
export declare class RuvectorLayer {
/**
* Create a new Ruvector GNN layer
*
* # Arguments
* * `input_dim` - Dimension of input node embeddings
* * `hidden_dim` - Dimension of hidden representations
* * `heads` - Number of attention heads
* * `dropout` - Dropout rate (0.0 to 1.0)
*
* # Example
* ```javascript
* const layer = new RuvectorLayer(128, 256, 4, 0.1);
* ```
*/
constructor(inputDim: number, hiddenDim: number, heads: number, dropout: number)
/**
* Forward pass through the GNN layer
*
* # Arguments
* * `node_embedding` - Current node's embedding
* * `neighbor_embeddings` - Embeddings of neighbor nodes
* * `edge_weights` - Weights of edges to neighbors
*
* # Returns
* Updated node embedding
*
* # Example
* ```javascript
* const node = [1.0, 2.0, 3.0, 4.0];
* const neighbors = [[0.5, 1.0, 1.5, 2.0], [2.0, 3.0, 4.0, 5.0]];
* const weights = [0.3, 0.7];
* const output = layer.forward(node, neighbors, weights);
* ```
*/
forward(nodeEmbedding: Array<number>, neighborEmbeddings: Array<Array<number>>, edgeWeights: Array<number>): Array<number>
/** Serialize the layer to JSON */
toJson(): string
/** Deserialize the layer from JSON */
static fromJson(json: string): RuvectorLayer
}
/** Tensor compressor with adaptive level selection */
export declare class TensorCompress {
/**
* Create a new tensor compressor
*
* # Example
* ```javascript
* const compressor = new TensorCompress();
* ```
*/
constructor()
/**
* Compress an embedding based on access frequency
*
* # Arguments
* * `embedding` - The input embedding vector
* * `access_freq` - Access frequency in range [0.0, 1.0]
*
* # Returns
* Compressed tensor as JSON string
*
* # Example
* ```javascript
* const embedding = [1.0, 2.0, 3.0, 4.0];
* const compressed = compressor.compress(embedding, 0.5);
* ```
*/
compress(embedding: Array<number>, accessFreq: number): string
/**
* Compress with explicit compression level
*
* # Arguments
* * `embedding` - The input embedding vector
* * `level` - Compression level configuration
*
* # Returns
* Compressed tensor as JSON string
*
* # Example
* ```javascript
* const embedding = [1.0, 2.0, 3.0, 4.0];
* const level = { level_type: "half", scale: 1.0 };
* const compressed = compressor.compressWithLevel(embedding, level);
* ```
*/
compressWithLevel(embedding: Array<number>, level: CompressionLevelConfig): string
/**
* Decompress a compressed tensor
*
* # Arguments
* * `compressed_json` - Compressed tensor as JSON string
*
* # Returns
* Decompressed embedding vector
*
* # Example
* ```javascript
* const decompressed = compressor.decompress(compressed);
* ```
*/
decompress(compressedJson: string): Array<number>
}