From pip install to GPU-accelerated production serving. Three levels, thirty-two chapters, every page grounded in the actual source — not paraphrase.
32 lessons · grouped by level · linear order works if you read straight through.
Beginner
10 lessonsInstall, open a database, write your first record, run your first query.
What ELIPS is (and isn't)
An embedded retrieval engine for vectors and documents. No server, no daemon.
Install ELIPS
Pip-install the Python wheel, or CMake-build the C++ core.
Your first database
Open a directory, write a vector, read it back, close the process, reopen.
Rows, vectors, metadata
The Row is the atom. Everything else hangs off it.
add and delete
Two mutation verbs. Both go through the WAL before touching memory.
query — nearest neighbors
Top-k nearest vectors, optionally with a distance cutoff.
Filters and metadata search
Narrow candidates with equality, ranges, IN, contains, AND/OR/NOT.
Documents, chunks, lineage
Text-first ingestion with full lineage that survives restarts.
Hybrid search
Fuse vector distance with lexical overlap from attached documents.
Command line tour
Inspect, checkpoint, verify, import, export — without writing any code.
Intermediate
10 lessonsEQL, transactions, durability, embedders, planner observability — the daily-driver surface.
EQL — the ELIPS Query Language
A small expression-oriented language with a real lexer, parser, AST, and executor.
Transactions
Buffered atomic batches. Validation is eager; commit cannot fail mid-batch.
Configuration & durability
dimension, metric, index, durability — set once, recorded forever in IDENTITY.
On-disk layout, from the outside
Eight files, two modes, one lock.
checkpoint() and compact()
checkpoint flushes; compact rebuilds.
Read-only mode & shared readers
One writer, many readers, all coordinated through a single advisory lock.
Embedders — built-in, custom, rehydratable
ELIPS ships a local embedder. Bring your own when you need to.
The planner and explain()
Ask the engine what it's about to do before it does it.
Error model
Typed C++ exceptions with a parallel Python hierarchy.
How the Python bindings work
pybind11 plus a thin Pythonic veneer. Same engine, two surfaces.
Advanced
12 lessonsStorage internals, HNSW, lock manager, query executor, GPU engine — everything under the hood.
Architecture — the whole stack
SDKs, database, collections, ports, engines, storage. Five layers.
Storage engine internals
WAL frame format, segment files, manifest, atomic swap.
Open & recovery flow
Six steps from open() to a queryable instance.
IndexHNSW — HNSW in ELIPS
Multi-layer skip-list-shaped proximity graph. Log-time approximate nearest neighbors.
LockManager internals
A small, deterministic, deadlock-free hierarchical lock manager.
Transaction engine internals
Eager validation, deferred apply, single done_ flag, destructor as the safety net.
EQL — lexer, parser, AST, executor
Four small files in src/. Hand-written recursive descent.
GPU engine architecture
Ports & adapters at the device boundary. Metal, CUDA, HIP, CPU — one backend contract.
Backends, device probe, selection
Metal, CUDA, HIP, CPU — each behind a compile-time flag.
QueryBatcher and the GPU pipelines
Coalesce concurrent queries into one launch; ingest and quantize on the device.
Performance — what to measure, what to tune
Three knobs cover 90% of recall-vs-latency tradeoffs.
Going to production
Checkpoint cadence, replicas, telemetry, backups. The four boxes you must tick.