Pure TypeScript vector search. No native bindings. No FAISS. No compile step.
Works on Node, Deno, Bun, Edge, Workers, and Browser.
1import { Vault } from 'vectorvault'; 2 3const vault = new Vault({ vault: 'my_knowledge', local: true }); 4 5vault.add('Mitochondria is the powerhouse of the cell'); 6vault.add('Neural networks mimic biological brains'); 7await vault.getVectors(); 8 9const results = await vault.getSimilar('How do cells produce energy?'); 10console.log(results[0].data); 11// → "Mitochondria is the powerhouse of the cell"
Vector search should be simple. Add data, search it semantically. VectorVault gives you a complete vector database in a single import — no infrastructure, no config files, no boilerplate.
No native bindings. No C++ compilation. No FAISS. Runs anywhere JavaScript runs — Node, Deno, Bun, Cloudflare Workers, even the browser.
Works completely offline. Your vectors stay on your machine. No API keys required for local mode. Full persistence to disk with save/load.
Find meaning, not just keywords. Add documents in any order and search by concept. Cosine similarity ranking with metadata filtering.
Check the package.json — "dependencies": {}. Nothing to install, nothing to break. The entire library is self-contained TypeScript.
Don't pre-process your documents. splitText() handles chunking with configurable overlap. Load a book, split it, index it — done.
Develop locally, deploy to VectorVault Cloud. Same API, same code. Managed persistence, team collaboration, and production scaling.
Every other vector library depends on native C++ bindings — FAISS, HNSWlib, Annoy. That means compile errors, platform headaches, and "works on my machine." VectorVault is pure TypeScript. It just works.
node-gyp, no Docker, no hassle
1{ 2 "name": "vectorvault", 3 "version": "2.2.4", 4 "dependencies": {} 5} 6 7// That's it. Zero runtime deps. 8// Pure TypeScript. Nothing else.
From prototype to production with the same simple API. No config files, no setup scripts — just code.
1import { Vault } from 'vectorvault'; 2 3// Create a vault — that's your vector database 4const vault = new Vault({ 5 vault: 'my_knowledge', 6 openaiKey: process.env.OPENAI_API_KEY, 7 local: true 8}); 9 10// Add data — text in, vectors out 11vault.add('The mitochondria is the powerhouse of the cell'); 12vault.add('Photosynthesis converts sunlight to chemical energy'); 13vault.add('DNA stores genetic information in nucleotide sequences'); 14 15// Generate embeddings & persist 16await vault.getVectors(); 17await vault.save(); 18 19// Search by meaning, not keywords 20const results = await vault.getSimilar('How do cells get energy?'); 21console.log(results[0].data); 22// → "The mitochondria is the powerhouse of the cell"
1import { Vault } from 'vectorvault'; 2import { readFileSync } from 'fs'; 3 4const vault = new Vault({ 5 vault: 'research_papers', 6 openaiKey: process.env.OPENAI_API_KEY, 7 local: true 8}); 9 10// Load and chunk a document 11const book = readFileSync('the-prince.txt', 'utf-8'); 12const chunks = vault.splitText(book, 100, 500); 13 14// Index every chunk with metadata 15for (const chunk of chunks) { 16 vault.add(chunk, { source: 'the-prince.txt' }); 17} 18 19await vault.getVectors(); 20await vault.save(); 21 22console.log(`Indexed ${chunks.length} chunks`); 23// → "Indexed 264 chunks"
1import { Vault } from 'vectorvault'; 2 3// Load your existing vault 4const vault = new Vault({ 5 vault: 'company_docs', 6 openaiKey: process.env.OPENAI_API_KEY, 7 local: true 8}); 9 10// Retrieve relevant context 11const query = 'What is our refund policy?'; 12const results = await vault.getSimilar(query, 5); 13 14// Build context for your LLM 15const context = results 16 .map(r => r.data) 17 .join('\n\n'); 18 19// Feed to any LLM 20const response = await fetch('https://api.openai.com/v1/chat/completions', { 21 method: 'POST', 22 headers: { 'Authorization': `Bearer ${process.env.OPENAI_API_KEY}` }, 23 body: JSON.stringify({ 24 model: 'gpt-4', 25 messages: [{ 26 role: 'user', 27 content: `Context:\n${context}\n\nQuestion: ${query}` 28 }] 29 }) 30});
1import { Vault } from 'vectorvault'; 2 3// Same API — just point to the cloud 4const vault = new Vault({ 5 vault: 'production_kb', 6 user: 'you@company.com', 7 apiKey: 'vv_your_api_key', 8 local: false // ← cloud mode 9}); 10 11// Everything works the same 12vault.add('New support article content...'); 13await vault.getVectors(); 14await vault.save(); 15 16// Managed persistence, team sharing, production scaling 17const results = await vault.getSimilar('How to reset password?'); 18 19// Access from your dashboard at vectorvault.io 20// Visual tools: Vector Flow, agent builder, analytics
VectorVault is the only library that gives you a complete vector database in pure TypeScript — no native deps, no framework lock-in.
| Feature | VectorVault | Pinecone | Chroma | faiss-node | Vectra | LangChain |
|---|---|---|---|---|---|---|
| Pure TypeScript | API only | Python | C++ bindings | Wrapper | ||
| Zero Dependencies | ||||||
| Works Offline | ||||||
| Edge / Workers | ||||||
| Persistence | ||||||
| Metadata | ||||||
| Built-in Chunking | ||||||
| Cloud Option | ||||||
| Free & Open Source | MIT | Paid |
Text goes in, vectors come out. Search by meaning, get ranked results with metadata. No graph databases, no complex infrastructure.
The open source library is free forever. When you need managed infrastructure, team access, and visual tools — VectorVault Cloud has you covered.