Persia DB
Persia DB is an embedded, single-file, cloud-native search database, written in Rust. Think “SQLite for search”: open a file, index documents, and get ranked results that, by default, never come back empty. The same segment bytes can live in a local file or in object storage (S3, GCS, or Azure Blob) and can be served by stateless query nodes on Kubernetes.

╔═ layers ═════════════════════════════════════════════════════════╗ ║ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ║░ ║ ┃ persia-server, Rust SDK, Go SDK ┃ ║░ ║ ┃ planned ┃ ║░ ║ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ║░ ║ ▼ ║░ ║ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ║░ ║ ┃ persia · Db and Collection ┃ ║░ ║ ┃ stub · no methods yet ┃ ║░ ║ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ║░ ║ ▼ ║░ ║ ┏━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━┓ ║░ ║ ┃ engine ┃ ┃ blob ┃ ┃ analysis ┃ ║░ ║ ┃ WAL and query ┃ ┃ chunks, dedup ┃ ┃ analyzers ┃ ║░ ║ ┃ in progress ┃ ┃ not started ┃ ┃ done ┃ ║░ ║ ┗━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━┛ ║░ ║ ▼ ║░ ║ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ║░ ║ ┃ persia-storage ┃ ║░ ║ ┃ memory and local file ┃ ║░ ║ ┃ s3, gcs, azure planned ┃ ║░ ║ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ║░ ║ ▼ ║░ ║ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ║░ ║ ┃ persia-format ┃ ║░ ║ ┃ encodings, checksums, codecs ┃ ║░ ║ ┃ done ┃ ║░ ║ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ║░ ╚══════════════════════════════════════════════════════════════════╝░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Getting startedRead the guideFeaturesHow it worksRoadmapGitHub
Waitlist
Section titled “Waitlist”Nothing here is ready to run. Leave an email if you want a note when that changes. What the form stores is described on the waitlist page.
Why this exists
Section titled “Why this exists”| Property | What it means | Status |
|---|---|---|
| Zero friction | Db::open("app.persia") just works. No daemon and no config file for the embedded library. |
Planned (M10) |
| Own engine | Index format, analysis, BM25F scoring, and query execution are written in this repository. | Format codecs, text analysis, and a segment writer and reader exist. The write path is in progress (M6, 49/58): WAL, commit, and segment merging. BM25F scoring and a collection search are in the tree (CollectionViews::search). There is no search call on the database handle. |
| Never zero results | A query that matches nothing is relaxed step by step, and the response says what changed. | Not started (M8). How the cascade is designed. |
| Cloud-native | Immutable segments. The same bytes locally and in object storage. Stateless query nodes. | Segment bytes can be written (M5 done, 48/48). The write path is in progress (M6, 49/58): WAL, commit, and segment merging. Object storage has not been started (M12). Query nodes have not been started (M13). |
| Correctness, then speed | Checksums, crash-safe commits, and fuzzed parsers come before performance claims. | Checksums, fuzzed parsers, the container commit, and segment read/write exist. The write path is in progress (M6, 49/58): WAL, commit, and segment merging. A collection snapshot can be searched as library code. There is no search call on the database handle. |
The design contract is SPEC.md (draft v0.1). When this site and the SPEC disagree, the SPEC wins.
Where to go next
Section titled “Where to go next”- Getting started separates the codecs you can call from the database API, which is still illustrative.
- What is an embedded search database? explains in-process, single-file full-text search, and which parts of that design exist in the repository.
- Typo-tolerant search explains query relaxation, fuzzy matching, BM25F, and filters: what is designed, and what the engine implements.
- Comparison places the design next to SQLite FTS5, Tantivy, and Meilisearch. Persia DB has no
persia::Dbsearch API yet (M10); the engine library code can search. - Guide overview is the full narrative, split from the repository guide.
- For AI agents is the short list of constraints. llms.txt indexes the pages.
- About covers license, conduct, and how to contribute.