explaingit

oramasearch/orama

10,336TypeScriptAudience · developerComplexity · 2/5Setup · easy

TLDR

A tiny in-app search engine that runs entirely inside your app, no server, no network round trip, with full-text, vector, and hybrid search in under 2 KB.

Mindmap

mindmap
  root((orama))
    Search types
      Full-text search
      Vector search
      Hybrid search
    Features
      Typo tolerance
      30 languages
      Facets filtering
      Geo search
    Environments
      Browser
      Node.js
      Edge networks
    Audience
      Web developers
      App builders
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add instant full-text search to a docs site or blog that works even when the user is offline.

USE CASE 2

Build a product catalog search that finds results by meaning rather than exact keywords using vector search.

USE CASE 3

Add faceted filtering to an e-commerce app so users can narrow search results by category, price range, or location.

USE CASE 4

Embed a GenAI answer engine in your app that answers user questions based on your content library.

Tech stack

TypeScriptJavaScript

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

Orama is a search engine library that runs entirely inside your application, with no external server required. You can use it in a web browser, on a Node.js server, or on edge networks that run code close to users around the world. The whole library weighs under 2 kilobytes, which means it adds almost nothing to your page load time. The way it works is straightforward. You define a schema that describes the shape of your data, insert your records into an in-memory database, and then run searches against it. Orama returns matching results along with relevance scores and timing information. Because everything lives in memory within your application, search results come back very quickly without any network round trips to a separate search service. Orama supports three kinds of search. Full-text search finds documents that contain the words you typed, with built-in tolerance for typos and support for stemming in 30 languages (so a search for "running" can also match "run"). Vector search compares numeric representations of meaning rather than exact words, which lets you find documents that are conceptually similar even if they share no common words. Hybrid search combines both approaches at once. Beyond basic search, the library includes filtering to narrow results by field values, facets for building category counts, fields boosting to make certain fields count more in scoring, geographic search for location-based queries, and a plugin system for extending its capabilities. There is also support for GenAI chat sessions, described in the documentation as an answer engine feature. Installation is a single npm command, and the library can also be imported directly from a CDN in plain HTML without any build tools. The documentation lives at docs.orama.com.

Copy-paste prompts

Prompt 1
I'm building a docs site and want to add search using Orama. Show me how to define a schema, insert my documents, and run a full-text search query in TypeScript.
Prompt 2
How do I use Orama's vector search to find articles that are semantically similar to a user's query, even if they share no common words? Show a working code example.
Prompt 3
I want to add faceted search to my React app using Orama, for example, filtering blog posts by tag while also doing keyword search. Walk me through the setup.
Prompt 4
Can Orama be imported directly in a plain HTML page without a build tool? Show me the CDN import and a minimal working search example.
Prompt 5
How does Orama's hybrid search work and when should I use it instead of pure full-text or pure vector search?
Open on GitHub → Explain another repo

← oramasearch on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.