⚙️ Configuration Reference

Complete reference for configuring Ryoma AI’s three-tier architecture: metadata stores, vector stores, and data sources.

📋 Configuration Structure

Complete Configuration Schema

{
  "model": "gpt-4o",
  "mode": "enhanced", 
  "embedding_model": "text-embedding-ada-002",
  
  "meta_store": {
    "type": "memory",
    "connection_string": null,
    "options": {}
  },
  
  "vector_store": {
    "type": "chroma",
    "collection_name": "ryoma_vectors", 
    "dimension": 768,
    "distance_metric": "cosine",
    "extra_configs": {
      "persist_directory": "./data/vectors"
    }
  },
  
  "datasources": [
    {
      "name": "default",
      "type": "postgres",
      "host": "localhost",
      "port": 5432,
      "database": "mydb",
      "user": "postgres",
      "password": "password"
    }
  ],
  
  "agent": {
    "auto_approve_all": false,
    "retry_count": 3,
    "timeout_seconds": 300
  }
}

🗄️ Metadata Store Configuration

Memory Store (Default)

{
  "meta_store": {
    "type": "memory"
  }
}

Use Cases:

  • Development and testing

  • Single-session usage

  • No persistence required

PostgreSQL Store

{
  "meta_store": {
    "type": "postgres",
    "connection_string": "postgresql://user:password@localhost:5432/metadata_db",
    "options": {
      "pool_size": 10,
      "max_overflow": 20,
      "echo": false
    }
  }
}

Use Cases:

  • Production deployments

  • Multi-user environments

  • Persistent metadata required

Redis Store

{
  "meta_store": {
    "type": "redis",
    "connection_string": "redis://localhost:6379/0",
    "options": {
      "decode_responses": true,
      "socket_timeout": 30,
      "retry_on_timeout": true
    }
  }
}

Use Cases:

  • Distributed deployments

  • High-performance caching

  • Microservices architecture

🔍 Vector Store Configuration

FAISS (In-Memory)

{
  "vector_store": {
    "type": "faiss", 
    "collection_name": "ryoma_vectors",
    "dimension": 1536,
    "distance_metric": "cosine",
    "extra_configs": {
      "index_type": "IndexFlatIP",
      "normalize_vectors": true
    }
  }
}

Qdrant (Production)

{
  "vector_store": {
    "type": "qdrant",
    "collection_name": "ryoma_vectors",
    "dimension": 1536, 
    "distance_metric": "cosine",
    "extra_configs": {
      "url": "http://localhost:6333",
      "api_key": "your-qdrant-api-key",
      "timeout": 30
    }
  }
}

PGVector (PostgreSQL Extension)

{
  "vector_store": {
    "type": "pgvector",
    "collection_name": "ryoma_vectors",
    "dimension": 1536,
    "distance_metric": "cosine", 
    "extra_configs": {
      "connection_string": "postgresql://user:password@localhost:5432/vector_db",
      "table_name": "langchain_pg_embedding",
      "collection_table_name": "langchain_pg_collection"
    }
  }
}

Note: PGVector uses fixed table names with langchain_pg_ prefix. For custom table names, consider using a custom vector store implementation.

💾 Data Source Configuration

PostgreSQL

{
  "name": "main_db",
  "type": "postgres", 
  "host": "localhost",
  "port": 5432,
  "database": "myapp",
  "user": "postgres",
  "password": "password",
  "options": {
    "sslmode": "require",
    "connect_timeout": 10
  }
}

MySQL

{
  "name": "mysql_db",
  "type": "mysql",
  "host": "localhost", 
  "port": 3306,
  "database": "myapp",
  "user": "root",
  "password": "password",
  "options": {
    "charset": "utf8mb4",
    "autocommit": true
  }
}

Snowflake

{
  "name": "warehouse",
  "type": "snowflake",
  "account": "your-account",
  "user": "your-username", 
  "password": "your-password",
  "database": "ANALYTICS",
  "schema": "PUBLIC",
  "warehouse": "COMPUTE_WH",
  "role": "DATA_ANALYST"
}

SQLite

{
  "name": "local_db",
  "type": "sqlite",
  "database": "/path/to/database.db"
}

BigQuery

{
  "name": "bigquery_ds",
  "type": "bigquery",
  "project_id": "your-project-id",
  "dataset_id": "analytics",
  "credentials_path": "/path/to/service-account.json"
}

DuckDB

{
  "name": "analytics_db",
  "type": "duckdb",
  "database": "/path/to/analytics.duckdb",
  "options": {
    "read_only": false,
    "memory_limit": "2GB"
  }
}

🎛️ Agent Configuration

Basic Agent Settings

{
  "agent": {
    "auto_approve_all": false,
    "retry_count": 3,
    "timeout_seconds": 300,
    "enable_logging": true,
    "log_level": "INFO"
  }
}

SQL Agent Specific

{
  "agent": {
    "sql_mode": "enhanced",
    "safety_config": {
      "enable_validation": true,
      "allowed_operations": ["SELECT", "WITH", "CTE"],
      "blocked_operations": ["DROP", "DELETE", "UPDATE"],
      "max_rows": 50000,
      "max_execution_time": 300,
      "require_where_clause": false
    },
    "reforce_config": {
      "enable_self_refinement": true,
      "parallel_generation": true,
      "consensus_voting": true,
      "exploration_depth": 3
    }
  }
}

🌍 Environment-Based Configuration

Development Environment

{
  "model": "gpt-3.5-turbo",
  "mode": "basic",
  "embedding_model": "text-embedding-ada-002",
  
  "meta_store": {"type": "memory"},
  "vector_store": {"type": "faiss"},
  "datasources": [
    {"type": "sqlite", "database": ":memory:"}
  ],
  
  "agent": {
    "auto_approve_all": true,
    "retry_count": 1,
    "timeout_seconds": 60
  }
}

Production Environment

{
  "model": "gpt-4o",
  "mode": "enhanced", 
  "embedding_model": "text-embedding-ada-002",
  
  "meta_store": {
    "type": "postgres",
    "connection_string": "postgresql://user:pass@prod-meta:5432/metadata"
  },
  "vector_store": {
    "type": "qdrant",
    "extra_configs": {
      "url": "http://qdrant-prod:6333",
      "api_key": "${QDRANT_API_KEY}"
    }
  },
  "datasources": [
    {
      "name": "warehouse",
      "type": "snowflake", 
      "account": "${SNOWFLAKE_ACCOUNT}",
      "user": "${SNOWFLAKE_USER}",
      "password": "${SNOWFLAKE_PASSWORD}"
    }
  ],
  
  "agent": {
    "auto_approve_all": false,
    "retry_count": 3,
    "timeout_seconds": 300,
    "safety_config": {
      "enable_validation": true,
      "max_rows": 100000,
      "allowed_operations": ["SELECT", "WITH"]
    }
  }
}

📁 Configuration Management

Configuration File Location

# Default location
~/.ryoma/config.json

# Custom location via environment
export RYOMA_CONFIG_PATH="/path/to/custom/config.json"

Environment Variable Substitution

{
  "datasources": [
    {
      "type": "postgres",
      "host": "${DB_HOST:localhost}",
      "database": "${DB_NAME}",
      "user": "${DB_USER}",
      "password": "${DB_PASSWORD}"
    }
  ]
}

Configuration Validation

# Validate configuration
ryoma-ai --validate-config

# Check specific section
ryoma-ai --validate-config meta_store

🚀 Configuration Examples

Multi-Database Setup

{
  "datasources": [
    {
      "name": "transactional",
      "type": "postgres",
      "host": "postgres-prod",
      "database": "transactions"
    },
    {
      "name": "analytics", 
      "type": "snowflake",
      "account": "analytics-account",
      "warehouse": "ANALYTICS_WH"
    },
    {
      "name": "local_cache",
      "type": "sqlite", 
      "database": "./cache/local.db"
    }
  ]
}

High-Performance Setup

{
  "model": "gpt-4o",
  "embedding_model": "text-embedding-3-large",
  
  "meta_store": {
    "type": "redis",
    "connection_string": "redis://redis-cluster:6379/0",
    "options": {
      "socket_timeout": 5,
      "retry_on_timeout": true
    }
  },
  
  "vector_store": {
    "type": "qdrant",
    "dimension": 3072,  # text-embedding-3-large
    "distance_metric": "cosine",
    "extra_configs": {
      "url": "http://qdrant-cluster:6333",
      "prefer_grpc": true,
      "timeout": 30
    }
  }
}

🔧 Troubleshooting Configuration

Common Configuration Issues

Store Connection Errors

# Check store connectivity
ryoma-ai --test-stores

# Validate specific store type
ryoma-ai --test-stores meta_store

Vector Store Dimension Mismatch

{
  "vector_store": {
    "dimension": 1536,  # Must match embedding model
    "extra_configs": {
      "auto_create_collection": true  # Auto-handle dimension
    }
  }
}

Data Source Authentication

{
  "datasources": [
    {
      "type": "postgres",
      "connection_string": "postgresql://user:password@host:5432/db",
      "options": {
        "connect_timeout": 30,
        "command_timeout": 300
      }
    }
  ]
}

Configuration Migration

# Migrate from old format
from ryoma_ai.config.migrator import ConfigMigrator

migrator = ConfigMigrator()
new_config = migrator.migrate_legacy_config("/path/to/old/config.json")
migrator.save_config(new_config, "/path/to/new/config.json")