Skip to main content
A ToraDB database is a directory you pass to toradb.local("./my_db"). Inside, each table has Parquet segments and optional index sidecars.

Inspect with DESCRIBE

Typical output includes:
  • Row count and vector dimension (if any)
  • Segment count and paths
  • Sidecars: bm25, vectors, hnsw, diskann, segment_*

Components

Persistence model

  1. Ingest — documents append to the active segment; indexes update incrementally where supported.
  2. Flush — segments are written as Parquet under the table directory.
  3. Reindex — rebuild a specific index type (BM25, HNSW, DISKANN) after bulk loads or schema changes.
  4. Compact — merge small segments to reduce file count (COMPACT TABLE; see Reindex and compact). COMPACT TABLE … FULL also migrates legacy JSON-only segments to native typed metadata columns.

Segment-only bulk ingest

Large tables use index_mode: segment_only in manifest.json: per-segment *.bm25.bin (TBM3) and *.bm25.lex.bin lexicons are built at finish; optional query_mode: routed uses bm25.route.bin to skip irrelevant segments at query time. Environment variables for the demo and CLI: See Production serving profiles for ingest vs serving presets.
Run examples/full_example.py once to populate examples/_demo_db, then use DESCRIBE on each table to see real sidecar names.