Come for the speed,stay for the quality.
A zero-bs fork of Orama maintained by the original team.
Full-text, vector, and hybrid search in your browser, server, or edge - in less than 2kb.
Benchmarks
Quality vs speed
Macro-average BEIR nDCG@10 against Node.js throughput. Up and to the right is better; throughput uses a logarithmic scale.
Features
Everything you need to search
The same Orama API you know - faster internals, no vendor lock-in.
Full-Text Search
Typo-tolerant BM25 with stemming in 30+ languages.
Vector Search
Fast similarity search with optional IVF indexing.
Hybrid Search
Combine keyword and semantic relevance in one query.
Search Filters
Filter by numbers, enums, booleans, and nested fields.
Geosearch
Radius, polygon, and sorted geo queries on BKD trees.
Results Pinning
Merchandising rules to boost or pin specific results.
Facets
Aggregate counts across categories at search time.
Fields Boosting
Weight schema properties to shape ranking.
Typo Tolerance
Forgiving matching powered by Levenshtein distance.
BM25
Industry-standard ranking out of the box.
30+ Languages
Tokenization and stemming for global text search.
Plugin System
Extend indexing, search, and persistence with hooks.
API
As simple as it gets
Just create an instance, insert your data, and start searching. No server, no database, no hassle.
import { create, insert, search } from 'zbsearch'
const db = create({
schema: {
title: 'string',
embedding: 'vector[384]',
},
})
await insert(db, {
title: 'Noise cancelling headphones',
embedding: [0.8271, 0.9274, 0.8371, 0,1723, 0.5291, ...],
})
const results = search(db, {
term: 'best headphones',
mode: 'hybrid',
})
Search box
Headless, so it looks like your site
@zbsearch/searchbox-react ships the behaviour - searching, grouping, keyboard nav, a11y. The look is a handful of CSS variables. Switch themes and type; the index is running in your browser.
Integrations
ZBSearch for Docs
Install one package and your existing site searches like this one.
Docusaurus
Indexes your docs, blog posts, and MDX pages while Docusaurus builds, then replaces the default search bar with a ZBSearch dialog.
npm install @zbsearch/plugin-docusaurusRead the guideStarlight
Swaps Starlight's built-in Pagefind search for the same dialog, wired into your content collections.
npm install @zbsearch/plugin-starlightRead the guideVitePress
Builds the index from VitePress’ own content loader, so results follow your srcDir, cleanUrls, and base exactly as the router does.
npm install @zbsearch/plugin-vitepressRead the guideSee all integrations - including the standalone React and Vue search boxes, and the markdown indexer they share.