mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-11-09 05:35:21 +09:00
Automatic checkpoint created by Claude Code - Branch: main - Timestamp: 2026-01-17T20:40:57Z - Changes: 10 file(s) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
176 lines
5.9 KiB
Bash
Executable File
176 lines
5.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Test connection to RuVector PostgreSQL
|
|
#
|
|
# Tests:
|
|
# - Basic connection
|
|
# - RuVector extension
|
|
# - Schema and tables
|
|
# - HNSW indices
|
|
# - Local embedding generation
|
|
# - Sample data
|
|
|
|
set -e
|
|
|
|
HOST="${PGHOST:-localhost}"
|
|
PORT="${PGPORT:-5432}"
|
|
DATABASE="${PGDATABASE:-claude_flow}"
|
|
USER="${PGUSER:-claude}"
|
|
PASSWORD="${PGPASSWORD:-claude-flow-test}"
|
|
|
|
echo "============================================"
|
|
echo "RuVector PostgreSQL Connection Test"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "Host: $HOST:$PORT"
|
|
echo "Database: $DATABASE"
|
|
echo "User: $USER"
|
|
echo ""
|
|
|
|
# 1. Test basic connection
|
|
echo "1. Testing connection..."
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -c "SELECT 1;" > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo " ✅ Connection successful"
|
|
else
|
|
echo " ❌ Connection failed"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Check PostgreSQL version
|
|
echo ""
|
|
echo "2. PostgreSQL version:"
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c "SELECT version();" | head -1 | xargs
|
|
|
|
# 3. Check RuVector extension
|
|
echo ""
|
|
echo "3. Checking RuVector extension..."
|
|
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT extversion FROM pg_extension WHERE extname = 'ruvector';" 2>/dev/null | tr -d ' ')
|
|
if [ -n "$RESULT" ]; then
|
|
echo " ✅ RuVector version: $RESULT"
|
|
else
|
|
# Fallback to check for vector extension (pgvector compatibility)
|
|
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT extversion FROM pg_extension WHERE extname = 'vector';" 2>/dev/null | tr -d ' ')
|
|
if [ -n "$RESULT" ]; then
|
|
echo " ⚠️ pgvector found (version: $RESULT) - RuVector not installed"
|
|
echo " Consider using ruvector/postgres:latest for full features"
|
|
else
|
|
echo " ❌ No vector extension found"
|
|
fi
|
|
fi
|
|
|
|
# 4. Check schema
|
|
echo ""
|
|
echo "4. Checking claude_flow schema..."
|
|
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT COUNT(*) FROM information_schema.schemata WHERE schema_name = 'claude_flow';" | tr -d ' ')
|
|
if [ "$RESULT" = "1" ]; then
|
|
echo " ✅ Schema exists"
|
|
else
|
|
echo " ❌ Schema not found"
|
|
fi
|
|
|
|
# 5. Check tables
|
|
echo ""
|
|
echo "5. Checking tables..."
|
|
TABLES=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT table_name FROM information_schema.tables WHERE table_schema = 'claude_flow' ORDER BY table_name;" | tr -d ' ' | grep -v "^$")
|
|
for table in $TABLES; do
|
|
echo " ✅ Table: $table"
|
|
done
|
|
|
|
# 6. Check HNSW indices
|
|
echo ""
|
|
echo "6. Checking HNSW indices..."
|
|
INDICES=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT indexname FROM pg_indexes WHERE schemaname = 'claude_flow' AND (indexdef LIKE '%hnsw%' OR indexdef LIKE '%ruvector_hnsw%');" | tr -d ' ' | grep -v "^$")
|
|
if [ -n "$INDICES" ]; then
|
|
for idx in $INDICES; do
|
|
echo " ✅ Index: $idx"
|
|
done
|
|
else
|
|
echo " ⚠️ No HNSW indices found"
|
|
fi
|
|
|
|
# 7. Test local embedding generation
|
|
echo ""
|
|
echo "7. Testing local embedding generation..."
|
|
RESULT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT CASE WHEN ruvector.fastembed('test', 'all-MiniLM-L6-v2') IS NOT NULL THEN 'success' ELSE 'failed' END;" 2>/dev/null | tr -d ' ')
|
|
if [ "$RESULT" = "success" ]; then
|
|
echo " ✅ Local embedding generation works"
|
|
else
|
|
# Try with basic vector function as fallback
|
|
echo " ⚠️ ruvector.fastembed not available"
|
|
echo " (May need full RuVector extension)"
|
|
fi
|
|
|
|
# 8. Count sample data
|
|
echo ""
|
|
echo "8. Sample data counts:"
|
|
|
|
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT COUNT(*) FROM claude_flow.embeddings;" 2>/dev/null | tr -d ' ')
|
|
echo " 📊 Embeddings: ${COUNT:-0} rows"
|
|
|
|
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT COUNT(*) FROM claude_flow.patterns;" 2>/dev/null | tr -d ' ')
|
|
echo " 📊 Patterns: ${COUNT:-0} rows"
|
|
|
|
COUNT=$(PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT COUNT(*) FROM claude_flow.agents;" 2>/dev/null | tr -d ' ')
|
|
echo " 📊 Agents: ${COUNT:-0} rows"
|
|
|
|
# 9. Check RuVector-specific features
|
|
echo ""
|
|
echo "9. RuVector feature availability:"
|
|
|
|
# Check for attention functions
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT ruvector.softmax_attention(NULL::ruvector.vector(384), NULL::ruvector.vector(384), 1.0);" > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo " ✅ Attention mechanisms"
|
|
else
|
|
echo " ⚠️ Attention mechanisms not available"
|
|
fi
|
|
|
|
# Check for hyperbolic functions
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT ruvector.exp_map_poincare(NULL::ruvector.vector(384), -1.0);" > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo " ✅ Hyperbolic embeddings"
|
|
else
|
|
echo " ⚠️ Hyperbolic embeddings not available"
|
|
fi
|
|
|
|
# Check for GNN functions
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT ruvector.gnn_aggregate(NULL::ruvector.vector(384)[], 'mean');" > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo " ✅ GNN operations"
|
|
else
|
|
echo " ⚠️ GNN operations not available"
|
|
fi
|
|
|
|
# Check for self-learning
|
|
PGPASSWORD=$PASSWORD psql -h $HOST -p $PORT -U $USER -d $DATABASE -t -c \
|
|
"SELECT ruvector.learn_optimize('claude_flow.embeddings', 'embedding');" > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
echo " ✅ Self-learning optimization"
|
|
else
|
|
echo " ⚠️ Self-learning not available"
|
|
fi
|
|
|
|
echo ""
|
|
echo "============================================"
|
|
echo "✅ Connection test complete!"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "Connection string:"
|
|
echo " postgresql://$USER:****@$HOST:$PORT/$DATABASE"
|
|
echo ""
|
|
echo "To run example queries:"
|
|
echo " psql postgresql://$USER@$HOST:$PORT/$DATABASE -f examples/basic-queries.sql"
|
|
echo ""
|