Skip to content

⚡ Vector Quantization: SQ8 & 1-Bit Binary (32x RAM Compression)

FlashQuantizer is FLASH's superpower vector compression engine designed to solve the RAM Explosion Problem in high-scale AI vector databases.


💥 The Big Problem: Vector Memory Inflation

Storing high-dimensional AI vectors (e.g. OpenAI 1536-dim or BERT 768-dim) as raw Float32 arrays consumes massive amounts of RAM:

Vector CountDimensionsRaw Float32 RAMWith Flash SQ8With Flash 1-Bit Binary
10,000153661.4 MB15.5 MB1.9 MB
100,0001536614.4 MB155.2 MB19.2 MB
1,000,00015366.14 GB1.55 GB (75% Savings)192 MB (32x Savings)
10,000,000153661.44 GB15.5 GB1.92 GB

🚀 1. Scalar Quantization (SQ8)

Scalar Quantization (SQ8) compresses 32-bit floating point values (4 bytes) into 8-bit integers (1 byte), retaining > 99% accuracy while reducing RAM footprint by 75%.

javascript
import { FlashQuantizer } from 'flash-zk';

const floatVector = new Float32Array([0.85, -0.42, 0.91, -0.15, 0.05, 0.77, -0.88, 0.33]);

// 1. Quantize Float32 to SQ8 Uint8Array
const sq8 = FlashQuantizer.quantizeSQ8(floatVector);
console.log(sq8.data); // Uint8Array [ 255, 68, 264, ... ]

// 2. Fast Asymmetric Cosine Similarity directly without full dequantization
const queryVec = new Float32Array([0.80, -0.40, 0.88, -0.10, 0.00, 0.70, -0.85, 0.30]);
const score = FlashQuantizer.asymmetricCosineSQ8(queryVec, sq8.data, sq8.min, sq8.scale);
console.log(`Cosine Similarity: ${score.toFixed(4)}`);

⚡ 2. 1-Bit Binary Quantization (32x RAM Savings)

Packs vector sign bits directly into unsigned 32-bit integers (Uint32Array). 1536 dimensions are packed into just 48 32-bit integers (192 bytes total)!

Distances are computed in single-cycle CPU instructions using bitwise XOR and POPCNT:

javascript
import { FlashQuantizer } from 'flash-zk';

// 1. Quantize vectors to 1-Bit Binary Bitmasks
const binA = FlashQuantizer.quantizeBinary(vectorA);
const binB = FlashQuantizer.quantizeBinary(vectorB);

// 2. Single-Cycle Bitwise Hamming Distance
const hammingDist = FlashQuantizer.hammingDistance(binA.data, binB.data);

// 3. Approximate Angular Cosine Similarity
const cosineSim = FlashQuantizer.cosineApproxFromBinary(binA.data, binB.data, 1536);
console.log(`Binary Cosine Match: ${cosineSim.toFixed(4)}`);

🛠️ Using Quantization in FlashVectorIndex & FlashAIDatabase

You can enable quantization seamlessly with zero configuration:

javascript
import { FlashAIDatabase } from 'flash-zk';

const aiDb = new FlashAIDatabase({
  name: 'enterprise_rag_vault',
  dimensions: 1536,
  quantization: 'sq8', // 'none' | 'sq8' | 'binary1bit'
});

// Storing vectors automatically uses SQ8 compression
await aiDb.remember('High-scale sovereign AI memory engine', { tag: 'ai' });

// Check live memory savings analytics
console.log(aiDb.getMemoryStats());

Released under the Apache 2.0 License.