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.
Records, vectors, payloads
The Record is the atom. Everything else hangs off it.
place and erase
Two mutation verbs. Both go through the WAL before touching memory.
seek — nearest neighbors
Top-k nearest vectors, optionally with a distance threshold.
Filters and payload 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_seek()
Ask the engine what it's about to do before it does it.
Error model
Six 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, instance, vaults, 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.
HierarchicalGraphIndex — 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. Five backends, one selector.
Backends, device probe, selection
Metal, CUDA, HIP, SYCL, Vulkan — each behind a compile-time flag.
DynamicBatcher 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.