Architecture
An overview of VectorAmp's system architecture and how components work together.
System Overview
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Dashboard │────▶│ WebService │────▶│ SABLE Engine │
│ (Next.js) │ │ (Express) │ │ (Rust/C++) │
└─────────────┘ └──────┬───────┘ └────────┬────────┘
│ │
┌──────▼───────┐ ┌─────▼──────┐
│ PostgreSQL │ │ S3 Storage │
│ (metadata) │ │ (vectors) │
└──────────────┘ └────────────┘
Components
SABLE Engine
The core vector database engine, written in Rust and C++. Handles:
- Vector storage and retrieval
- Index building and optimization
- Similarity search execution
- Write-ahead logging (WAL) for durability
WebService
Express.js API layer that provides:
- RESTful API for all client operations
- Authentication and authorization
- Multi-tenant routing
- Rate limiting
Dashboard
Next.js web application for:
- Visual dataset and pipeline management
- Monitoring and metrics
- API key management
- Organization settings
PostgreSQL
Stores application metadata:
- User accounts and organizations
- Dataset and pipeline configurations
- API key records
- Audit logs
Object Storage (S3)
Stores bulk data:
- Raw vector data
- Pipeline source files
- Backups and snapshots
Multi-Tenancy
VectorAmp uses a multi-tenant architecture where each organization is fully isolated:
- Separate namespaces in the SABLE engine
- Row-level security in PostgreSQL
- Scoped API keys — each key can only access its organization's resources
- Independent resource quotas per organization
Data Flow
Write Path
- Client sends vectors via API
- WebService authenticates and routes to the correct tenant
- Vectors are written to the WAL for durability
- SABLE engine indexes vectors in the background
- Vectors become searchable once indexed
Read Path
- Client sends search query via API
- WebService routes to the correct tenant
- SABLE engine executes the search against the index
- Results are returned with scores and metadata