791 lines
18 KiB
Markdown
791 lines
18 KiB
Markdown
# SQL API Reference
|
|
|
|
## Overview
|
|
|
|
Complete SQL API for the Neural DAG Learning system integrated with RuVector-Postgres.
|
|
|
|
## Configuration Functions
|
|
|
|
### System Configuration
|
|
|
|
```sql
|
|
-- Enable/disable neural DAG learning
|
|
SELECT ruvector.dag_set_enabled(enabled BOOLEAN) RETURNS VOID;
|
|
|
|
-- Configure learning rate
|
|
SELECT ruvector.dag_set_learning_rate(rate FLOAT8) RETURNS VOID;
|
|
|
|
-- Set attention mechanism
|
|
SELECT ruvector.dag_set_attention(
|
|
mechanism TEXT -- 'topological', 'causal_cone', 'critical_path',
|
|
-- 'mincut_gated', 'hierarchical_lorentz',
|
|
-- 'parallel_branch', 'temporal_btsp', 'auto'
|
|
) RETURNS VOID;
|
|
|
|
-- Configure SONA parameters
|
|
SELECT ruvector.dag_configure_sona(
|
|
micro_lora_rank INT DEFAULT 2,
|
|
base_lora_rank INT DEFAULT 8,
|
|
ewc_lambda FLOAT8 DEFAULT 5000.0,
|
|
pattern_clusters INT DEFAULT 100
|
|
) RETURNS VOID;
|
|
|
|
-- Set QuDAG network endpoint
|
|
SELECT ruvector.dag_set_qudag_endpoint(
|
|
endpoint TEXT,
|
|
stake_amount FLOAT8 DEFAULT 0.0
|
|
) RETURNS VOID;
|
|
```
|
|
|
|
### Runtime Status
|
|
|
|
```sql
|
|
-- Get current configuration
|
|
SELECT * FROM ruvector.dag_config();
|
|
-- Returns: (enabled, learning_rate, attention_mechanism,
|
|
-- micro_lora_rank, base_lora_rank, ewc_lambda, qudag_endpoint)
|
|
|
|
-- Get system status
|
|
SELECT * FROM ruvector.dag_status();
|
|
-- Returns: (active_patterns, total_trajectories, avg_improvement,
|
|
-- attention_hits, learning_rate_effective, qudag_connected)
|
|
|
|
-- Check health
|
|
SELECT * FROM ruvector.dag_health_check();
|
|
-- Returns: (component, status, last_check, message)
|
|
```
|
|
|
|
## Query Analysis Functions
|
|
|
|
### Plan Analysis
|
|
|
|
```sql
|
|
-- Analyze query plan and return neural DAG insights
|
|
SELECT * FROM ruvector.dag_analyze_plan(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
node_id INT,
|
|
operator_type TEXT,
|
|
criticality FLOAT8,
|
|
bottleneck_score FLOAT8,
|
|
embedding VECTOR(256),
|
|
parent_ids INT[],
|
|
child_ids INT[],
|
|
estimated_cost FLOAT8,
|
|
recommendations TEXT[]
|
|
);
|
|
|
|
-- Get critical path for query
|
|
SELECT * FROM ruvector.dag_critical_path(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
path_position INT,
|
|
node_id INT,
|
|
operator_type TEXT,
|
|
accumulated_cost FLOAT8,
|
|
attention_weight FLOAT8
|
|
);
|
|
|
|
-- Identify bottlenecks
|
|
SELECT * FROM ruvector.dag_bottlenecks(
|
|
query_text TEXT,
|
|
threshold FLOAT8 DEFAULT 0.7
|
|
) RETURNS TABLE (
|
|
node_id INT,
|
|
operator_type TEXT,
|
|
bottleneck_score FLOAT8,
|
|
impact_estimate FLOAT8,
|
|
suggested_action TEXT
|
|
);
|
|
|
|
-- Get min-cut analysis
|
|
SELECT * FROM ruvector.dag_mincut_analysis(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
cut_id INT,
|
|
source_nodes INT[],
|
|
sink_nodes INT[],
|
|
cut_capacity FLOAT8,
|
|
parallelization_opportunity BOOLEAN
|
|
);
|
|
```
|
|
|
|
### Query Optimization
|
|
|
|
```sql
|
|
-- Get optimization suggestions
|
|
SELECT * FROM ruvector.dag_suggest_optimizations(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
suggestion_id INT,
|
|
category TEXT, -- 'index', 'join_order', 'parallelism', 'memory'
|
|
description TEXT,
|
|
expected_improvement FLOAT8,
|
|
implementation_sql TEXT,
|
|
confidence FLOAT8
|
|
);
|
|
|
|
-- Rewrite query using learned patterns
|
|
SELECT ruvector.dag_rewrite_query(
|
|
query_text TEXT
|
|
) RETURNS TEXT;
|
|
|
|
-- Estimate query with neural predictions
|
|
SELECT * FROM ruvector.dag_estimate(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
metric TEXT,
|
|
postgres_estimate FLOAT8,
|
|
neural_estimate FLOAT8,
|
|
confidence FLOAT8
|
|
);
|
|
```
|
|
|
|
## Attention Mechanism Functions
|
|
|
|
### Attention Scores
|
|
|
|
```sql
|
|
-- Compute attention for query DAG
|
|
SELECT * FROM ruvector.dag_attention_scores(
|
|
query_text TEXT,
|
|
mechanism TEXT DEFAULT 'auto'
|
|
) RETURNS TABLE (
|
|
node_id INT,
|
|
attention_weight FLOAT8,
|
|
query_contribution FLOAT8[],
|
|
key_contribution FLOAT8[]
|
|
);
|
|
|
|
-- Get attention matrix
|
|
SELECT ruvector.dag_attention_matrix(
|
|
query_text TEXT,
|
|
mechanism TEXT DEFAULT 'auto'
|
|
) RETURNS FLOAT8[][];
|
|
|
|
-- Visualize attention (returns DOT graph)
|
|
SELECT ruvector.dag_attention_visualize(
|
|
query_text TEXT,
|
|
mechanism TEXT DEFAULT 'auto',
|
|
format TEXT DEFAULT 'dot' -- 'dot', 'json', 'ascii'
|
|
) RETURNS TEXT;
|
|
```
|
|
|
|
### Attention Configuration
|
|
|
|
```sql
|
|
-- Set attention hyperparameters
|
|
SELECT ruvector.dag_attention_configure(
|
|
mechanism TEXT,
|
|
params JSONB
|
|
-- Example params:
|
|
-- topological: {"max_depth": 5, "decay_factor": 0.9}
|
|
-- causal_cone: {"time_window": 1000, "future_discount": 0.5}
|
|
-- critical_path: {"path_weight": 2.0, "branch_penalty": 0.3}
|
|
-- mincut_gated: {"gate_threshold": 0.1, "flow_capacity": "cost"}
|
|
-- hierarchical_lorentz: {"curvature": -1.0, "time_scale": 0.1}
|
|
-- parallel_branch: {"max_branches": 8, "sync_penalty": 0.2}
|
|
-- temporal_btsp: {"plateau_duration": 100, "eligibility_decay": 0.95}
|
|
) RETURNS VOID;
|
|
|
|
-- Get attention statistics
|
|
SELECT * FROM ruvector.dag_attention_stats()
|
|
RETURNS TABLE (
|
|
mechanism TEXT,
|
|
invocations BIGINT,
|
|
avg_latency_us FLOAT8,
|
|
hit_rate FLOAT8,
|
|
improvement_ratio FLOAT8
|
|
);
|
|
```
|
|
|
|
## SONA Learning Functions
|
|
|
|
### Pattern Management
|
|
|
|
```sql
|
|
-- Store a learned pattern
|
|
SELECT ruvector.dag_store_pattern(
|
|
pattern_vector VECTOR(256),
|
|
pattern_metadata JSONB,
|
|
quality_score FLOAT8
|
|
) RETURNS BIGINT; -- pattern_id
|
|
|
|
-- Query similar patterns
|
|
SELECT * FROM ruvector.dag_query_patterns(
|
|
query_vector VECTOR(256),
|
|
k INT DEFAULT 5,
|
|
similarity_threshold FLOAT8 DEFAULT 0.7
|
|
) RETURNS TABLE (
|
|
pattern_id BIGINT,
|
|
similarity FLOAT8,
|
|
quality_score FLOAT8,
|
|
metadata JSONB,
|
|
usage_count INT,
|
|
last_used TIMESTAMPTZ
|
|
);
|
|
|
|
-- Get pattern clusters (ReasoningBank)
|
|
SELECT * FROM ruvector.dag_pattern_clusters()
|
|
RETURNS TABLE (
|
|
cluster_id INT,
|
|
centroid VECTOR(256),
|
|
member_count INT,
|
|
avg_quality FLOAT8,
|
|
representative_query TEXT
|
|
);
|
|
|
|
-- Force pattern consolidation
|
|
SELECT ruvector.dag_consolidate_patterns(
|
|
target_clusters INT DEFAULT 100
|
|
) RETURNS TABLE (
|
|
clusters_before INT,
|
|
clusters_after INT,
|
|
patterns_merged INT,
|
|
consolidation_time_ms FLOAT8
|
|
);
|
|
```
|
|
|
|
### Trajectory Management
|
|
|
|
```sql
|
|
-- Record a learning trajectory
|
|
SELECT ruvector.dag_record_trajectory(
|
|
query_hash BIGINT,
|
|
dag_structure JSONB,
|
|
execution_time_ms FLOAT8,
|
|
improvement_ratio FLOAT8,
|
|
attention_mechanism TEXT
|
|
) RETURNS BIGINT; -- trajectory_id
|
|
|
|
-- Get trajectory history
|
|
SELECT * FROM ruvector.dag_trajectory_history(
|
|
time_range TSTZRANGE DEFAULT NULL,
|
|
min_improvement FLOAT8 DEFAULT 0.0,
|
|
limit_count INT DEFAULT 100
|
|
) RETURNS TABLE (
|
|
trajectory_id BIGINT,
|
|
query_hash BIGINT,
|
|
recorded_at TIMESTAMPTZ,
|
|
execution_time_ms FLOAT8,
|
|
improvement_ratio FLOAT8,
|
|
attention_mechanism TEXT
|
|
);
|
|
|
|
-- Analyze trajectory trends
|
|
SELECT * FROM ruvector.dag_trajectory_trends(
|
|
window_size INTERVAL DEFAULT '1 hour'
|
|
) RETURNS TABLE (
|
|
window_start TIMESTAMPTZ,
|
|
trajectory_count INT,
|
|
avg_improvement FLOAT8,
|
|
best_mechanism TEXT,
|
|
pattern_discoveries INT
|
|
);
|
|
```
|
|
|
|
### Learning Control
|
|
|
|
```sql
|
|
-- Trigger immediate learning cycle
|
|
SELECT ruvector.dag_learn_now() RETURNS TABLE (
|
|
patterns_updated INT,
|
|
new_clusters INT,
|
|
ewc_constraints_updated INT,
|
|
cycle_time_ms FLOAT8
|
|
);
|
|
|
|
-- Reset learning state (use with caution)
|
|
SELECT ruvector.dag_reset_learning(
|
|
preserve_patterns BOOLEAN DEFAULT TRUE,
|
|
preserve_trajectories BOOLEAN DEFAULT FALSE
|
|
) RETURNS VOID;
|
|
|
|
-- Export learned state
|
|
SELECT ruvector.dag_export_state() RETURNS BYTEA;
|
|
|
|
-- Import learned state
|
|
SELECT ruvector.dag_import_state(state_data BYTEA) RETURNS TABLE (
|
|
patterns_imported INT,
|
|
trajectories_imported INT,
|
|
clusters_restored INT
|
|
);
|
|
|
|
-- Get EWC constraint info
|
|
SELECT * FROM ruvector.dag_ewc_constraints()
|
|
RETURNS TABLE (
|
|
parameter_name TEXT,
|
|
fisher_importance FLOAT8,
|
|
optimal_value FLOAT8,
|
|
last_updated TIMESTAMPTZ
|
|
);
|
|
```
|
|
|
|
## Self-Healing Functions
|
|
|
|
### Health Monitoring
|
|
|
|
```sql
|
|
-- Run comprehensive health check
|
|
SELECT * FROM ruvector.dag_health_report()
|
|
RETURNS TABLE (
|
|
subsystem TEXT,
|
|
status TEXT,
|
|
score FLOAT8,
|
|
issues TEXT[],
|
|
recommendations TEXT[]
|
|
);
|
|
|
|
-- Get anomaly detection results
|
|
SELECT * FROM ruvector.dag_anomalies(
|
|
time_range TSTZRANGE DEFAULT '[now - 1 hour, now]'::TSTZRANGE
|
|
) RETURNS TABLE (
|
|
anomaly_id BIGINT,
|
|
detected_at TIMESTAMPTZ,
|
|
anomaly_type TEXT,
|
|
severity TEXT,
|
|
affected_component TEXT,
|
|
z_score FLOAT8,
|
|
resolved BOOLEAN
|
|
);
|
|
|
|
-- Check index health
|
|
SELECT * FROM ruvector.dag_index_health()
|
|
RETURNS TABLE (
|
|
index_name TEXT,
|
|
index_type TEXT,
|
|
fragmentation FLOAT8,
|
|
recall_estimate FLOAT8,
|
|
recommended_action TEXT
|
|
);
|
|
|
|
-- Check learning drift
|
|
SELECT * FROM ruvector.dag_learning_drift()
|
|
RETURNS TABLE (
|
|
metric TEXT,
|
|
current_value FLOAT8,
|
|
baseline_value FLOAT8,
|
|
drift_magnitude FLOAT8,
|
|
trend TEXT
|
|
);
|
|
```
|
|
|
|
### Repair Operations
|
|
|
|
```sql
|
|
-- Trigger automatic repair
|
|
SELECT * FROM ruvector.dag_auto_repair()
|
|
RETURNS TABLE (
|
|
repair_id BIGINT,
|
|
repair_type TEXT,
|
|
target TEXT,
|
|
status TEXT,
|
|
duration_ms FLOAT8
|
|
);
|
|
|
|
-- Rebalance specific index
|
|
SELECT ruvector.dag_rebalance_index(
|
|
index_name TEXT,
|
|
target_recall FLOAT8 DEFAULT 0.95
|
|
) RETURNS TABLE (
|
|
vectors_moved INT,
|
|
new_recall FLOAT8,
|
|
duration_ms FLOAT8
|
|
);
|
|
|
|
-- Reset pattern quality scores
|
|
SELECT ruvector.dag_reset_pattern_quality(
|
|
pattern_ids BIGINT[] DEFAULT NULL -- NULL = all patterns
|
|
) RETURNS INT; -- patterns reset
|
|
|
|
-- Force cluster recomputation
|
|
SELECT ruvector.dag_recompute_clusters(
|
|
algorithm TEXT DEFAULT 'kmeans_pp'
|
|
) RETURNS TABLE (
|
|
old_clusters INT,
|
|
new_clusters INT,
|
|
silhouette_score FLOAT8
|
|
);
|
|
```
|
|
|
|
## QuDAG Integration Functions
|
|
|
|
### Network Operations
|
|
|
|
```sql
|
|
-- Connect to QuDAG network
|
|
SELECT ruvector.qudag_connect(
|
|
endpoint TEXT,
|
|
identity_key BYTEA DEFAULT NULL -- auto-generate if NULL
|
|
) RETURNS TABLE (
|
|
connected BOOLEAN,
|
|
node_id TEXT,
|
|
network_version TEXT
|
|
);
|
|
|
|
-- Get network status
|
|
SELECT * FROM ruvector.qudag_status()
|
|
RETURNS TABLE (
|
|
connected BOOLEAN,
|
|
node_id TEXT,
|
|
peers INT,
|
|
latest_round BIGINT,
|
|
sync_status TEXT
|
|
);
|
|
|
|
-- Propose pattern to network
|
|
SELECT ruvector.qudag_propose_pattern(
|
|
pattern_vector VECTOR(256),
|
|
metadata JSONB,
|
|
stake_amount FLOAT8 DEFAULT 0.0
|
|
) RETURNS TABLE (
|
|
proposal_id TEXT,
|
|
submitted_at TIMESTAMPTZ,
|
|
status TEXT
|
|
);
|
|
|
|
-- Check proposal status
|
|
SELECT * FROM ruvector.qudag_proposal_status(
|
|
proposal_id TEXT
|
|
) RETURNS TABLE (
|
|
status TEXT,
|
|
votes_for INT,
|
|
votes_against INT,
|
|
finalized BOOLEAN,
|
|
finalized_at TIMESTAMPTZ
|
|
);
|
|
|
|
-- Sync patterns from network
|
|
SELECT * FROM ruvector.qudag_sync_patterns(
|
|
since_round BIGINT DEFAULT 0
|
|
) RETURNS TABLE (
|
|
patterns_received INT,
|
|
patterns_applied INT,
|
|
conflicts_resolved INT
|
|
);
|
|
```
|
|
|
|
### Token Operations
|
|
|
|
```sql
|
|
-- Get rUv balance
|
|
SELECT ruvector.qudag_balance() RETURNS FLOAT8;
|
|
|
|
-- Stake tokens
|
|
SELECT ruvector.qudag_stake(
|
|
amount FLOAT8
|
|
) RETURNS TABLE (
|
|
new_stake FLOAT8,
|
|
tx_hash TEXT
|
|
);
|
|
|
|
-- Claim rewards
|
|
SELECT * FROM ruvector.qudag_claim_rewards()
|
|
RETURNS TABLE (
|
|
amount FLOAT8,
|
|
tx_hash TEXT,
|
|
source TEXT
|
|
);
|
|
|
|
-- Get staking info
|
|
SELECT * FROM ruvector.qudag_staking_info()
|
|
RETURNS TABLE (
|
|
staked_amount FLOAT8,
|
|
pending_rewards FLOAT8,
|
|
lock_until TIMESTAMPTZ,
|
|
apr_estimate FLOAT8
|
|
);
|
|
```
|
|
|
|
### Cryptographic Operations
|
|
|
|
```sql
|
|
-- Generate ML-KEM keypair
|
|
SELECT ruvector.qudag_generate_kem_keypair()
|
|
RETURNS TABLE (
|
|
public_key BYTEA,
|
|
secret_key_id TEXT -- stored securely
|
|
);
|
|
|
|
-- Encrypt data for peer
|
|
SELECT ruvector.qudag_encrypt(
|
|
plaintext BYTEA,
|
|
recipient_pubkey BYTEA
|
|
) RETURNS TABLE (
|
|
ciphertext BYTEA,
|
|
encapsulated_key BYTEA
|
|
);
|
|
|
|
-- Decrypt received data
|
|
SELECT ruvector.qudag_decrypt(
|
|
ciphertext BYTEA,
|
|
encapsulated_key BYTEA,
|
|
secret_key_id TEXT
|
|
) RETURNS BYTEA;
|
|
|
|
-- Sign data
|
|
SELECT ruvector.qudag_sign(
|
|
data BYTEA
|
|
) RETURNS BYTEA; -- ML-DSA signature
|
|
|
|
-- Verify signature
|
|
SELECT ruvector.qudag_verify(
|
|
data BYTEA,
|
|
signature BYTEA,
|
|
pubkey BYTEA
|
|
) RETURNS BOOLEAN;
|
|
```
|
|
|
|
## Monitoring and Statistics
|
|
|
|
### Performance Metrics
|
|
|
|
```sql
|
|
-- Get overall statistics
|
|
SELECT * FROM ruvector.dag_statistics()
|
|
RETURNS TABLE (
|
|
metric TEXT,
|
|
value FLOAT8,
|
|
unit TEXT,
|
|
updated_at TIMESTAMPTZ
|
|
);
|
|
|
|
-- Get latency breakdown
|
|
SELECT * FROM ruvector.dag_latency_breakdown(
|
|
time_range TSTZRANGE DEFAULT '[now - 1 hour, now]'::TSTZRANGE
|
|
) RETURNS TABLE (
|
|
component TEXT,
|
|
p50_us FLOAT8,
|
|
p95_us FLOAT8,
|
|
p99_us FLOAT8,
|
|
max_us FLOAT8
|
|
);
|
|
|
|
-- Get memory usage
|
|
SELECT * FROM ruvector.dag_memory_usage()
|
|
RETURNS TABLE (
|
|
component TEXT,
|
|
allocated_bytes BIGINT,
|
|
used_bytes BIGINT,
|
|
peak_bytes BIGINT
|
|
);
|
|
|
|
-- Get throughput metrics
|
|
SELECT * FROM ruvector.dag_throughput(
|
|
window INTERVAL DEFAULT '1 minute'
|
|
) RETURNS TABLE (
|
|
metric TEXT,
|
|
count BIGINT,
|
|
per_second FLOAT8
|
|
);
|
|
```
|
|
|
|
### Debugging
|
|
|
|
```sql
|
|
-- Enable debug logging
|
|
SELECT ruvector.dag_set_debug(
|
|
enabled BOOLEAN,
|
|
components TEXT[] DEFAULT ARRAY['all']
|
|
) RETURNS VOID;
|
|
|
|
-- Get recent debug logs
|
|
SELECT * FROM ruvector.dag_debug_logs(
|
|
since TIMESTAMPTZ DEFAULT now() - interval '5 minutes',
|
|
component TEXT DEFAULT NULL,
|
|
severity TEXT DEFAULT NULL -- 'debug', 'info', 'warn', 'error'
|
|
) RETURNS TABLE (
|
|
logged_at TIMESTAMPTZ,
|
|
component TEXT,
|
|
severity TEXT,
|
|
message TEXT,
|
|
context JSONB
|
|
);
|
|
|
|
-- Trace single query
|
|
SELECT * FROM ruvector.dag_trace_query(
|
|
query_text TEXT
|
|
) RETURNS TABLE (
|
|
step INT,
|
|
operation TEXT,
|
|
duration_us FLOAT8,
|
|
details JSONB
|
|
);
|
|
|
|
-- Export diagnostics bundle
|
|
SELECT ruvector.dag_export_diagnostics() RETURNS BYTEA;
|
|
```
|
|
|
|
## Batch Operations
|
|
|
|
### Bulk Processing
|
|
|
|
```sql
|
|
-- Analyze multiple queries
|
|
SELECT * FROM ruvector.dag_bulk_analyze(
|
|
queries TEXT[]
|
|
) RETURNS TABLE (
|
|
query_index INT,
|
|
bottleneck_count INT,
|
|
suggested_mechanism TEXT,
|
|
estimated_improvement FLOAT8
|
|
);
|
|
|
|
-- Pre-warm patterns for workload
|
|
SELECT ruvector.dag_prewarm_patterns(
|
|
representative_queries TEXT[]
|
|
) RETURNS TABLE (
|
|
patterns_loaded INT,
|
|
cache_hit_rate FLOAT8
|
|
);
|
|
|
|
-- Batch record trajectories
|
|
SELECT ruvector.dag_bulk_record_trajectories(
|
|
trajectories JSONB[]
|
|
) RETURNS INT; -- trajectories recorded
|
|
```
|
|
|
|
## Views
|
|
|
|
### System Views
|
|
|
|
```sql
|
|
-- Active configuration
|
|
CREATE VIEW ruvector.dag_active_config AS
|
|
SELECT * FROM ruvector.dag_config();
|
|
|
|
-- Recent patterns
|
|
CREATE VIEW ruvector.dag_recent_patterns AS
|
|
SELECT pattern_id, created_at, quality_score, usage_count
|
|
FROM ruvector.dag_patterns
|
|
WHERE created_at > now() - interval '24 hours'
|
|
ORDER BY quality_score DESC;
|
|
|
|
-- Attention effectiveness
|
|
CREATE VIEW ruvector.dag_attention_effectiveness AS
|
|
SELECT
|
|
mechanism,
|
|
count(*) as uses,
|
|
avg(improvement_ratio) as avg_improvement,
|
|
percentile_cont(0.95) WITHIN GROUP (ORDER BY improvement_ratio) as p95_improvement
|
|
FROM ruvector.dag_trajectories
|
|
WHERE recorded_at > now() - interval '7 days'
|
|
GROUP BY mechanism;
|
|
|
|
-- Health summary
|
|
CREATE VIEW ruvector.dag_health_summary AS
|
|
SELECT
|
|
subsystem,
|
|
status,
|
|
score,
|
|
array_length(issues, 1) as issue_count
|
|
FROM ruvector.dag_health_report();
|
|
```
|
|
|
|
## Installation SQL
|
|
|
|
```sql
|
|
-- Create extension
|
|
CREATE EXTENSION IF NOT EXISTS ruvector_dag CASCADE;
|
|
|
|
-- Required tables (auto-created by extension)
|
|
-- ruvector.dag_patterns - Learned patterns storage
|
|
-- ruvector.dag_trajectories - Learning trajectory history
|
|
-- ruvector.dag_clusters - Pattern clusters (ReasoningBank)
|
|
-- ruvector.dag_anomalies - Detected anomalies log
|
|
-- ruvector.dag_repairs - Repair history
|
|
-- ruvector.dag_qudag_proposals - QuDAG proposal tracking
|
|
|
|
-- Recommended indexes
|
|
CREATE INDEX ON ruvector.dag_patterns USING hnsw (pattern_vector vector_cosine_ops);
|
|
CREATE INDEX ON ruvector.dag_trajectories (recorded_at DESC);
|
|
CREATE INDEX ON ruvector.dag_trajectories (query_hash);
|
|
CREATE INDEX ON ruvector.dag_anomalies (detected_at DESC) WHERE NOT resolved;
|
|
|
|
-- Grant permissions
|
|
GRANT USAGE ON SCHEMA ruvector TO PUBLIC;
|
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ruvector TO PUBLIC;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA ruvector TO PUBLIC;
|
|
```
|
|
|
|
## Usage Examples
|
|
|
|
### Basic Query Optimization
|
|
|
|
```sql
|
|
-- Enable neural DAG learning
|
|
SELECT ruvector.dag_set_enabled(true);
|
|
|
|
-- Analyze a query
|
|
SELECT * FROM ruvector.dag_analyze_plan($$
|
|
SELECT v.*, m.category
|
|
FROM vectors v
|
|
JOIN metadata m ON v.id = m.vector_id
|
|
WHERE v.embedding <-> $1 < 0.5
|
|
ORDER BY v.embedding <-> $1
|
|
LIMIT 100
|
|
$$);
|
|
|
|
-- Get optimization suggestions
|
|
SELECT * FROM ruvector.dag_suggest_optimizations($$
|
|
SELECT v.*, m.category
|
|
FROM vectors v
|
|
JOIN metadata m ON v.id = m.vector_id
|
|
WHERE v.embedding <-> $1 < 0.5
|
|
ORDER BY v.embedding <-> $1
|
|
LIMIT 100
|
|
$$);
|
|
```
|
|
|
|
### Attention Mechanism Selection
|
|
|
|
```sql
|
|
-- Let system choose best attention
|
|
SELECT ruvector.dag_set_attention('auto');
|
|
|
|
-- Or manually select based on workload
|
|
-- For deep query plans:
|
|
SELECT ruvector.dag_set_attention('topological');
|
|
|
|
-- For time-series workloads:
|
|
SELECT ruvector.dag_set_attention('causal_cone');
|
|
|
|
-- For CPU-bound queries:
|
|
SELECT ruvector.dag_set_attention('critical_path');
|
|
```
|
|
|
|
### Distributed Learning with QuDAG
|
|
|
|
```sql
|
|
-- Connect to QuDAG network
|
|
SELECT * FROM ruvector.qudag_connect(
|
|
'https://qudag.example.com:8443'
|
|
);
|
|
|
|
-- Stake tokens for participation
|
|
SELECT * FROM ruvector.qudag_stake(100.0);
|
|
|
|
-- Patterns are now automatically shared and validated
|
|
-- Check sync status
|
|
SELECT * FROM ruvector.qudag_status();
|
|
```
|
|
|
|
## Error Codes
|
|
|
|
| Code | Name | Description |
|
|
|------|------|-------------|
|
|
| RV001 | DAG_DISABLED | Neural DAG learning is disabled |
|
|
| RV002 | INVALID_ATTENTION | Unknown attention mechanism |
|
|
| RV003 | PATTERN_NOT_FOUND | Referenced pattern does not exist |
|
|
| RV004 | LEARNING_FAILED | Learning cycle failed |
|
|
| RV005 | QUDAG_DISCONNECTED | Not connected to QuDAG network |
|
|
| RV006 | QUDAG_AUTH_FAILED | QuDAG authentication failed |
|
|
| RV007 | INSUFFICIENT_STAKE | Not enough staked tokens |
|
|
| RV008 | CRYPTO_ERROR | Cryptographic operation failed |
|
|
| RV009 | REPAIR_FAILED | Self-healing repair failed |
|
|
| RV010 | TRAJECTORY_OVERFLOW | Trajectory buffer full |
|
|
|
|
---
|
|
|
|
*Document: 09-SQL-API.md | Version: 1.0 | Last Updated: 2025-01-XX*
|