explaingit

reyneill/turbosearch

Analysis updated 2026-05-18

1TypeScriptAudience · developerComplexity · 4/5Setup · moderate

TLDR

A TypeScript command line tool that gives AI agents fast, private semantic and keyword search over local documents, PDFs, images, and audio or video.

Mindmap

mindmap
  root((TurboSearch))
    What it does
      Document ingestion
      Semantic search
      Agent friendly CLI
    Tech stack
      TypeScript
      Bun
      SQLite
      Postgres
    Use cases
      Search client files
      OCR scanned PDFs
      Transcribe audio video
    Audience
      Developers
      AI agent builders
    Search modes
      Exact vector
      BM25 keyword
      Hybrid fusion

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

What do people build with it?

USE CASE 1

Give an AI agent private, local search over a client's documents and contracts.

USE CASE 2

Search scanned PDFs and images by extracting and indexing their text with OCR.

USE CASE 3

Search transcripts of audio and video files without sending data to an outside service.

USE CASE 4

Scale search to a shared, production corpus using PostgreSQL with vector and keyword fusion.

What is it built with?

TypeScriptBunSQLitePostgreSQLpgvector

How does it compare?

reyneill/turbosearch0xkinno/neuralvault0xmayurrr/ai-contractauditor
Stars111
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderatehardeasy
Complexity4/54/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Real semantic search requires an OpenAI API key, production storage needs PostgreSQL with pgvector and psql_bm25s.

In plain English

TurboSearch is a TypeScript command line tool for running local semantic search over documents that an AI agent needs to look through, such as a client's files. It is built with Bun and organizes its work into separate layers for ingesting files, storing data, generating embeddings, and running the actual vector search, so each piece can be swapped out later. The tool can ingest plain text and code files, extract text from PDFs (using a layout aware parser first, then pdftotext, then an OCR model for scanned pages), run OCR on images, and transcribe audio and video using either the Cohere Transcribe service or a self hosted alternative. Video files can also have their frames sampled and read with OCR at fixed time intervals. By default TurboSearch uses local hash based embeddings, which are private and consistent but not true semantic embeddings, for higher quality search, a user can add an OpenAI API key and ingest documents with real embeddings instead. For storage, SQLite is the default, using its FTS5 feature for keyword search and an in process vector index for similarity search, which keeps the tool simple to run without extra setup. For larger, shared, or production use, TurboSearch can instead use PostgreSQL with the pgvector and psql_bm25s extensions, letting the database itself combine keyword and vector matching rather than pulling every chunk into the application. A Docker based command is included to spin up a temporary Postgres instance for local testing of that mode. Search itself supports several backends: an exact cosine similarity search, a compressed TurboQuant style search meant to be faster on large collections, a plain keyword BM25 search, and a hybrid mode that merges vector and keyword results together. The command line interface also has a JSON output mode and a streaming JSON Lines mode, both intended for other programs or AI agents to call directly rather than for a human reading plain text output. The README frames this as infrastructure for agent facing search rather than a finished consumer product, and lists formats like DOCX, PPTX, and XLSX as not yet supported.

Copy-paste prompts

Prompt 1
Help me ingest a folder of client documents into TurboSearch and search it from the command line.
Prompt 2
Explain the difference between TurboSearch's exact, turbo, bm25, and hybrid search backends.
Prompt 3
Show me how to switch TurboSearch from local hash embeddings to OpenAI embeddings.
Prompt 4
Walk me through setting up TurboSearch's PostgreSQL storage mode with pgvector for production.

Frequently asked questions

What is turbosearch?

A TypeScript command line tool that gives AI agents fast, private semantic and keyword search over local documents, PDFs, images, and audio or video.

What language is turbosearch written in?

Mainly TypeScript. The stack also includes TypeScript, Bun, SQLite.

How hard is turbosearch to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is turbosearch for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.