The Missing Piece for On-Device AI
The world of AI is moving to the edge. With the rise of on-device models like Transformers.js, Gemma, and Phind, we are closer than ever to a truly "dark" application architecture—one where zero data leaves the user's device.
However, there’s a paradox: while we have the models running on-device, we are still sending our sensitive data to cloud-based vector databases like Pinecone or Weaviate to perform similarity searches.
I wanted to solve this paradox.
I’ve been building TalaDB: an open-source, local-first document and vector database built in Rust that runs identically across the Browser (WASM), Node.js, and React Native.
The Multi-Platform Problem
If you've ever tried to build a cross-platform, local-first app, you know the pain:
- Developing for the browser? You're likely stuck with IndexedDB or a complex WASM-SQL setup.
- Developing for Mobile? You're probably using SQLite.
-
Developer Experience (DX) Hell: Managing separate drivers, binary extensions for vector search (
sqlite-vss), and split business logic is a nightmare.
I wanted a single, unified API. One core to rule them all.
Introducing TalaDB: A Unified Engine
TalaDB provides a familiar, MongoDB-like API for both document filtering and vector similarity search. Whether you are in a React Native app or a Chrome SharedWorker, the code looks exactly the same:
const results = await articles.findNearest('embedding', query, 5, {
category: 'support',
locale: 'en',
});
One call. Metadata filter + Vector ranking. No cloud round-trips.
Deep Dive: Under the Hood
Why Rust + redb?
I chose a pure-Rust architecture because of the safety and performance guarantees. For the storage engine, I use redb—a high-performance B-tree store that provides ACID transactions without the overhead of a full SQL engine.
WASM + OPFS: The Bleeding Edge
In the browser, TalaDB leverages the Origin Private File System (OPFS). By running the database inside a SharedWorker, I can achieve near-native performance while keeping the main UI thread completely free.
Binary Compactness
By using postcard for binary serialization, TalaDB keeps data footprints extremely small—often smaller and faster than traditional JSON-based stores. The entire WASM bundle is sub-400KB.
Practical Example: Offline Semantic Search
Imagine building a support app that works 100% offline. Here is how you'd handle a hybrid query:
import { openDB } from 'taladb';
const db = await openDB('docs.db');
const articles = db.collection('articles');
// Find the 5 most relevant articles for a given embedding
const results = await articles.findNearest('embedding', userVector, 5);
results.forEach(({ document, score }) => {
console.log(`[${score.toFixed(2)}] ${document.title}`);
});
The Future of Local-First
TalaDB is currently in Alpha (v0.3.0). My goal is to bridge the gap between human privacy and machine-learning intelligence.
I’m currently focused on:
- ⚡ Further optimizations for React Native JSI.
- 📡 Adding atomic sync and multi-user capabilities.
- 🧠 Expanding the query operator library.
TalaDB is open-source and MIT licensed. I’d love for you to try the alpha, give me some feedback, or even give the project a star if you find it useful.
Links: