Skip to main content

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

  1. Client sends vectors via API
  2. WebService authenticates and routes to the correct tenant
  3. Vectors are written to the WAL for durability
  4. SABLE engine indexes vectors in the background
  5. Vectors become searchable once indexed

Read Path

  1. Client sends search query via API
  2. WebService routes to the correct tenant
  3. SABLE engine executes the search against the index
  4. Results are returned with scores and metadata