Vector Search Comparison · 2026

altor-vec vs Pinecone: Client-Side vs Cloud Vector Search

The choice between altor-vec and Pinecone is not about which is better — it is about deployment boundary. altor-vec runs in the browser with no server required. Pinecone assumes a server and gives you the controls that environment needs. Confusing those boundaries leads to either overbuilding a simple public search surface or underbuilding a private, business-critical retrieval pipeline.

Install altor-vec: npm install altor-vec  ·  54KB gzipped WASM · Sub-millisecond queries · Zero server required

When to Use altor-vec

altor-vec wins when these conditions are true:

When to Use Pinecone

Pinecone wins when these conditions are true:

Feature Comparison

Capabilityaltor-vecPinecone
Runs in browser✅ Yes (WASM)❌ No
Server required❌ None✅ Required
Bundle size54KB gzipped~3KB SDK (queries remote)
Query latencySub-millisecond (local)~50–200ms (network round-trip)
Max practical scale~200K vectorsBillions of vectors
Index update modelRebuild on deployContinuous upserts
Per-query costNoneBased on pod/serverless plan
Access controlApp-level onlyFull cloud IAM
Offline support✅ Full❌ Requires network
Privacy (query stays on device)✅ Yes❌ No (server processes query)

Code Comparison

altor-vec (browser, zero backend)

import init, { WasmSearchEngine } from 'altor-vec';

await init();
const engine = new WasmSearchEngine(384, 'cosine');

// Build index from your embeddings (Float32Array per vector)
for (const [id, embedding] of vectors) {
  engine.add(id, new Float32Array(embedding));
}

// Query — runs locally, sub-millisecond
const results = engine.search(new Float32Array(queryEmbedding), 5);
// results: [{ id, score }, ...]

Pinecone (cloud, server-side)

import { Pinecone } from '@pinecone-database/pinecone';

const pc = new Pinecone({ apiKey: process.env.PINECONE_API_KEY });
const index = pc.index('my-index');

// Upsert vectors (server-side only)
await index.upsert([{ id: 'doc1', values: embedding, metadata: { text } }]);

// Query (requires network round-trip)
const result = await index.query({
  vector: queryEmbedding,
  topK: 5,
  includeMetadata: true,
});

Migration: Pinecone → altor-vec

Migrating makes sense when your corpus is static, public, and under ~200K vectors. The steps:

  1. Export vectors from Pinecone using index.fetch(ids) or a full export script
  2. Convert each vector to a Float32Array and store alongside your document metadata as JSON
  3. Build the altor-vec HNSW index at build time (or in a Web Worker at first load)
  4. Serialize the index to a binary file and serve it as a static asset
  5. Load and query client-side — no API key, no network call
// Build script (Node.js, runs at deploy time)
import init, { WasmSearchEngine } from 'altor-vec';
import fs from 'fs';

await init();
const engine = new WasmSearchEngine(384, 'cosine');

const corpus = JSON.parse(fs.readFileSync('./vectors.json', 'utf8'));
for (const { id, embedding } of corpus) {
  engine.add(id, new Float32Array(embedding));
}

// Serialize and write to public/
const bytes = engine.serialize();
fs.writeFileSync('./public/search-index.bin', Buffer.from(bytes));

Can They Coexist?

Yes — and this is a common production pattern. Teams use altor-vec for public-facing documentation or product search (zero cost, offline capable, privacy-preserving) and Pinecone for internal RAG pipelines over private documents (continuous updates, access control, large scale).

Pattern: altor-vec handles the public docs search (zero query cost, runs in browser) · Pinecone handles private document retrieval (continuous updates, access control)

Frequently Asked Questions

Is altor-vec better than Pinecone?
altor-vec is better for browser-native, zero-infra search over public corpora under ~200K vectors. Pinecone is better for large private corpora with continuous writes and multi-user access control. Neither is universally better.
Can altor-vec replace Pinecone?
For browser-native and edge use cases with public data, yes. For large-scale private retrieval with continuous writes and access control, no. Many teams use both in the same product.
How do I migrate from Pinecone to altor-vec?
Export your Pinecone vectors, convert to Float32Array per vector, build an altor-vec HNSW index at build time, serialize to a binary file, and serve as a static asset. Full example above.